
# 步骤2：数据准备
#### 使用DataArts Studio前的准备
如果您是第一次使用DataArts Studio，请参考[购买并配置DataArts Studio](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0115.html)章节完成注册华为账号、购买DataArts Studio实例、创建工作空间等一系列操作。然后进入到对应的工作空间，即可开始使用DataArts Studio。
本入门示例，为了演示DataArts Studio数据治理的全流程，华为账号需要具有DataArts Studio的所有执行权限。
 #### 准备数据源
本入门指南以某市出租车出行数据为例，统计某出租车供应商2017年度的运营数据。
![](https://support.huaweicloud.com/qs-dataartsstudio/public_sys-resources/note_3.0-zh-cn.png)
本示例演示的原始数据来自于[NYC开放数据平台](https://data.cityofnewyork.us/Transportation/2017-Yellow-Taxi-Trip-Data/biws-g3hs/about_data)。
为方便演示，**您无需获取原始数据**，本示例提供了模拟原始数据的样例数据供您使用。您可以参考下文的样例数据准备方法，将样例数据存储为CSV文件，将CSV文件上传至OBS服务中，然后再使用DataArts Studio数据集成将样例数据集成到其他云服务中。
样例数据准备方法如下：
1. 创建一个CSV文件（UTF-8无bom格式），文件名称为"2017_Yellow_Taxi_Trip_Data.csv"，将后文提供的样例数据复制粘贴到CSV文件中，然后保存CSV文件。 
   以下是Windows下生成.csv文件的办法之一：
   1. 使用文本编辑工具（如记事本）新建一个txt文档，将某个样例数据复制到文档中。
      ![](https://support.huaweicloud.com/qs-dataartsstudio/public_sys-resources/note_3.0-zh-cn.png)
      - 复制后检查数据的行数及数据分行的正确性。
      
      - 如果是从PDF文档中复制样例数据，单行的数据过长时会产生换行，需手动重新调整为单行。
        
   
   2. 单击"文件 \> 另存为"，在弹出的对话框中，"保存类型"选择为"所有文件(\*.\*)"，在"文件名"处输入文件名和.csv后缀，选择"UTF-8"编码格式（不能带BOM），则能以CSV格式保存该文件。
    
   
   
2. 将源数据CSV文件上传到OBS服务。 
   1. 登录控制台，选择"存储 \> 对象存储服务 OBS"，进入OBS控制台。
   
   2. 单击"创建桶"，然后根据页面提示配置参数，创建一个名称为"fast-demo"的OBS桶。
      ![](https://support.huaweicloud.com/qs-dataartsstudio/public_sys-resources/note_3.0-zh-cn.png)
      为保证网络互通，OBS桶区域请选择和DataArts Studio实例相同的区域。如果需要选择企业项目，也请选择与DataArts Studio实例相同的企业项目。
      使用OBS控制台创建桶的操作，请参见[创建桶](https://support.huaweicloud.com/usermanual-obs/zh-cn_topic_0045829088.html)。
      
   
   3. 上传数据到名称为"fast-demo"的OBS桶中。 使用OBS控制台上传文件的操作，请参见[上传文件](https://support.huaweicloud.com/usermanual-obs/obs_03_1002.html)。
      
   
   
   
   
样例数据如下。
```
VendorID,tpep_pickup_datetime,tpep_dropoff_datetime,passenger_count,trip_distance,RatecodeID,store_and_fwd_flag,PULocationID,DOLocationID,payment_type,fare_amount,extra,mta_tax,tip_amount,tolls_amount,improvement_surcharge,total_amount
2,02/14/2017 04:08:11 PM,02/14/2017 04:21:53 PM,1,0.91,1,N,237,163,2,9.5,1,0.5,0,0,0.3,11.3
2,02/14/2017 04:08:11 PM,02/14/2017 04:19:29 PM,2,1.03,1,N,237,229,1,8.5,1,0.5,2.06,0,0.3,12.36
1,02/14/2017 04:08:12 PM,02/14/2017 04:19:44 PM,1,1.6,1,N,186,163,2,9,1,0.5,0,0,0.3,10.8
1,02/14/2017 04:08:12 PM,02/14/2017 04:19:15 PM,1,1.2,1,N,48,48,2,8.5,1,0.5,0,0,0.3,10.3
2,02/14/2017 04:08:12 PM,02/14/2017 04:13:38 PM,5,0.61,1,N,161,162,1,5.5,1,0.5,2.19,0,0.3,9.49
2,02/14/2017 04:08:12 PM,02/14/2017 05:35:11 PM,1,19.31,2,N,152,132,1,52,4.5,0.5,12.57,5.54,0.3,75.41
1,02/14/2017 04:08:13 PM,02/14/2017 04:20:53 PM,1,1.9,1,N,236,143,1,10.5,1,0.5,1.85,0,0.3,14.15
2,02/14/2017 04:08:13 PM,02/14/2017 04:15:54 PM,1,0.61,1,N,48,164,1,6.5,1,0.5,1.66,0,0.3,9.96
2,02/14/2017 04:08:13 PM,02/14/2017 04:41:40 PM,1,6.04,1,N,244,262,1,25,1,0.5,6.7,0,0.3,33.5
2,02/14/2017 04:08:13 PM,02/14/2017 04:17:31 PM,1,1.39,1,N,170,234,1,8,1,0.5,1,0,0.3,10.8
2,02/14/2017 04:08:14 PM,02/14/2017 04:54:11 PM,2,10.12,1,N,140,189,1,37.5,1,0.5,7,0,0.3,46.3
2,02/14/2017 04:08:14 PM,02/14/2017 04:13:56 PM,1,0.71,1,N,179,7,2,5.5,1,0.5,0,0,0.3,7.3
2,02/14/2017 04:08:14 PM,02/14/2017 05:04:24 PM,1,18.1,2,N,263,132,1,52,4.5,0.5,15.71,5.54,0.3,78.55
2,02/14/2017 04:08:14 PM,02/14/2017 04:08:47 PM,1,0.02,1,N,231,231,2,2.5,1,0.5,0,0,0.3,4.3
2,02/14/2017 04:08:15 PM,02/14/2017 04:18:13 PM,1,1.34,1,N,100,162,1,8,1,0.5,1.2,0,0.3,11
1,02/14/2017 04:08:16 PM,02/14/2017 04:19:01 PM,1,1.8,1,N,239,151,1,9,1,0.5,2.15,0,0.3,12.95
2,02/14/2017 04:08:16 PM,02/14/2017 04:15:57 PM,1,1.06,1,N,68,170,1,6.5,1,0.5,1,0,0.3,9.3
2,02/14/2017 04:08:16 PM,02/14/2017 04:20:08 PM,2,1.5,1,N,161,142,1,9,1,0.5,2.16,0,0.3,12.96
2,02/14/2017 04:08:16 PM,02/14/2017 04:11:56 PM,1,0.62,1,N,87,88,2,4.5,1,0.5,0,0,0.3,6.3
2,02/14/2017 04:08:16 PM,02/14/2017 04:13:20 PM,1,0.88,1,N,262,236,2,5.5,1,0.5,0,0,0.3,7.3
```
数据说明如下：
表1出租车行程数据 
| 序号 | 字段名称                  | 字段描述                                                                                                                                                                                                                                                                                                                                                                                            |
|:---|:---|:---|
| 1  | VendorID              | 供应商编号 取值如下： 1=A Company 2=B Company                                                                                                                                                                                                                                   |
| 2  | tpep_pickup_datetime  | 上车时间                                                                                                                                                                                                                                                                                                                                                                                            |
| 3  | tpep_dropoff_datetime | 下车时间                                                                                                                                                                                                                                                                                                                                                                                            |
| 4  | passenger_count       | 乘客人数                                                                                                                                                                                                                                                                                                                                                                                            |
| 5  | trip_distance         | 行驶距离                                                                                                                                                                                                                                                                                                                                                                                            |
| 6  | ratecodeid            | 费率代码 取值如下： 1=Standard rate 2=JFK 3=Newark 4=Nassau or Westchester 5=Negotiated fare 6=Group ride |
| 7  | store_fwd_flag        | 存储转发标识                                                                                                                                                                                                                                                                                                                                                                                          |
| 8  | PULocationID          | 上车地点                                                                                                                                                                                                                                                                                                                                                                                            |
| 9  | DOLocationID          | 下车地点                                                                                                                                                                                                                                                                                                                                                                                            |
| 10 | payment_type          | 付款方式代码 取值如下： 1=Credit card 2=Cash 3=No charge 4=Dispute 5=Unknown 6=Voided trip                   |
| 11 | fare_amount           | 车费                                                                                                                                                                                                                                                                                                                                                                                              |
| 12 | extra                 | 加收                                                                                                                                                                                                                                                                                                                                                                                              |
| 13 | mta_tax               | MTA税                                                                                                                                                                                                                                                                                                                                                                                            |
| 14 | tip_amount            | 手续费                                                                                                                                                                                                                                                                                                                                                                                             |
| 15 | tolls_amount          | 通行费                                                                                                                                                                                                                                                                                                                                                                                             |
| 16 | improvement_surcharge | 改善附加费                                                                                                                                                                                                                                                                                                                                                                                           |
| 17 | total_amount          | 总车费                                                                                                                                                                                                                                                                                                                                                                                             |
   
#### 准备数据湖
在使用DataArts Studio前，您需要根据业务场景选择符合需求的云服务或数据库作为数据底座，由数据底座提供存储和计算的能力，DataArts Studio基于数据底座进行一站式数据开发、治理和服务。
DataArts Studio平台支持对接如DLI、DWS、MRS Hive等云服务，也支持对接如MySQL、Oracle等传统数据库，支持程度各有不同，详情请参见[DataArts Studio支持的数据源](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0005.html)章节。
本示例选择MapReduce服务（MRS）的Hive组件作为DataArts Studio平台的数据底座。您需要先创建一个MRS安全集群（即开启"Kerberos认证"的MRS集群，安全性更强），具体操作请参见[创建集群](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0513.html)。
为确保MRS集群与DataArts Studio实例网络互通，MRS集群需满足如下要求：
- MRS集群必须包含Hive组件。
- 如需使用基于DataArts Studio数据架构的数据标准自动生成质量作业的功能，MRS集群版本必须是2.0.3及以上版本，集群必须包含Hive和Spark组件，集群总节点数至少4个。本示例需要使用该功能，因此必须满足这个条件。
  如果选择集群后连接失败，请检查MRS集群与作为Agent的CDM实例是否网络互通。网络互通需满足如下条件：
  - DataArts Studio实例中的CDM集群与MRS集群处于不同区域的情况下，需要通过公网或者专线打通网络。通过公网互通时，需确保CDM集群已绑定EIP，MRS集群可以访问公网且防火墙规则已开放连接端口。
  
  - DataArts Studio实例中的CDM集群与MRS集群同区域情况下，同虚拟私有云、同子网、同安全组的不同实例默认网络互通；如果同虚拟私有云但子网或安全组不同，还需配置路由规则及安全组规则，配置路由规则请参见[如何配置路由规则](https://support.huaweicloud.com/bestpractice-vpc/bestpractice_0009.html#bestpractice_0009__zh-cn_topic_0252060877_li16617547103419)章节，配置安全组规则请参见[如何配置安全组规则](https://support.huaweicloud.com/usermanual-ecs/zh-cn_topic_0140323152.html)章节。
  
  - 此外，还需确保该MRS集群与DataArts Studio工作空间所属的企业项目相同，如果不同，您需要修改工作空间的企业项目。
  
  
  ![](https://support.huaweicloud.com/qs-dataartsstudio/public_sys-resources/note_3.0-zh-cn.png)
  当同一Agent连接多个MRS集群时，如果其中一个MRS集群被删除或状态异常，会影响另外一个正常的MRS集群数据连接。因此建议一个Agent对应一个MRS集群数据连接。
  
 
#### 在管理中心创建数据连接
准备好数据湖之后，在DataArts Studio管理中心模块中创建数据连接，以便连接作为数据湖的云服务。
1. [登录DataArts Studio管理控制台](https://console.huaweicloud.com/dayu/)。
   
   详情请参考[访问DataArts Studio实例控制台](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0001.html)。
   
   
2. 在DataArts Studio控制台首页，选择对应工作空间的"管理中心"模块，进入管理中心页面。
3. 在"数据连接"页面，单击"创建数据连接"按钮。 
   图1数据连接   
   ![](https://support.huaweicloud.com/qs-dataartsstudio/zh-cn_image_0000002028721365.png "点击放大")
   
   
   
4. 在弹出窗口中，配置数据连接参数，完成配置后，单击"保存"完成数据连接的创建。 
   此处创建MapReduce服务（MRS Hive）数据连接，重要的参数配置如[图2]所示。
   - **数据连接类型**：MapReduce服务（MRS Hive）。
   
   - **数据连接名称**：mrs_hive_link。
   
   - **标签**：可选参数。您可以输入新的标签名称，也可以在下拉列表中选择已有的标签。
   
   - **适用组件**：保持默认即可。
   
   - **连接方式**：选择"通过代理连接"。
   
   - **手动：**选择"集群名模式"，"IP"和"端口"不需要手动填写。
   
   - **MRS集群名**：选择已有的MRS集群。
   
   - **KMS加密密钥**：选择一个KMS密钥，使用KMS密钥对敏感数据进行加密。如果未创建KMS密钥，请单击"访问KMS"进入KMS控制台创建一个密钥。
   
   - **绑定Agent** ：需选择一个数据集成集群作为连接代理，该集群和MRS集群必须处于相同的区域、可用区、VPC和子网，并且安全组规则允许两者网络互通。本示例可选择创建DataArts Studio实例时自动创建的数据集成集群。
     如需连接MRS 2.x版本的集群，请选择2.x版本的数据集成集群作为Agent代理。
     
   
   - **用户名** ：新建的Kerberos认证用户。注意，MRS的策略中，admin用户是默认的管理页面用户，这个用户无法作为使用Kerberos认证集群的认证用户来使用。因此如果要为使用Kerberos认证的MRS集群创建连接，需要执行如下操作：
     1. 使用admin账户登录MRS服务的Manager页面。
     
     2. 在Manager页面选择"系统 \> 权限 \> 安全策略 \> 密码策略"，单击"新增密码策略"，添加一个永不过期的密码策略。
        - "密码策略名"可配置为"neverexp"。
        
        - "密码有效期（天）"配置为"0"，表示永不过期。
        
        - "密码失效提前提醒天数"配置为"0"。
        
        - 其他参数保持默认即可。
         
     
     3. 在Manager页面选择"系统 \> 权限 \> 用户"，单击"添加用户"，添加一个专有人机用户作为kerberos认证用户，密码策略选择为永不过期策略"neverexp"，并且为这个用户添加用户组和分配角色权限，用户组选择superGroup，角色建议全选，然后根据页面提示完成用户的创建。
        ![](https://support.huaweicloud.com/qs-dataartsstudio/public_sys-resources/note_3.0-zh-cn.png)
        - MRS 3.1.0及之后版本集群，所创建的用户至少需具备Manager_viewer的角色权限才能在管理中心创建连接；如果需要对应组件进行库、表、数据的操作，还需要添加对应组件的用户组权限。
        
        - MRS 3.1.0版本之前的集群，所创建的用户需要具备Manager_administrator或System_administrator权限，才能在管理中心创建连接。
        
        - 仅具备Manager_tenant或Manager_auditor权限，无法创建连接。
          
     
     4. 使用新建的用户登录Manager页面，并更新初始密码，否则会导致创建连接失败。
     
     5. 同步IAM用户。
        1. 登录MRS管理控制台。
        
        2. 选择"集群列表 \> 现有集群"，选中一个运行中的集群并单击集群名称，进入集群信息页面。
        
        3. 在"概览"页签的基本信息区域，单击"IAM用户同步"右侧的"同步"进行IAM用户同步。
           ![](https://support.huaweicloud.com/qs-dataartsstudio/public_sys-resources/note_3.0-zh-cn.png)
           - 如果显示为"已同步"，则可忽略本操作。
           
           - 当IAM用户的用户组的所属策略从MRS ReadOnlyAccess向MRS CommonOperations、MRS FullAccess、MRS Administrator变化时，由于集群节点的SSSD（System Security Services Daemon）缓存刷新需要时间，因此同步完成后，请等待5分钟，等待新修改策略生效之后，再进行提交作业。否则，会出现提交作业失败的情况。
           
           - 当IAM用户的用户组的所属策略从MRS CommonOperations、MRS FullAccess、MRS Administrator向MRS ReadOnlyAccess变化时，由于集群节点的SSSD缓存刷新需要时间，因此同步完成后，请等待5分钟，新修改策略才能生效。
             
         
      
   
   - **密码**：Kerberos认证用户对应的密码。
   
   - **元数据实时同步**：保持默认即可。
   
   
   图2创建MRS Hive数据连接   
   ![](https://support.huaweicloud.com/qs-dataartsstudio/zh-cn_image_0000002563018575.png "点击放大")
   
   
   
   
 
#### 创建数据库
根据数据湖治理落地流程，建议您在数据湖中为SDI层、DWI层、DWR层和DM层分别创建一个数据库，从而对数据进行分层分库。数据分层是后面在数据架构中将涉及到的概念，此处先简单了解即可，在数据架构时将深入了解与操作。
- SDI (Source Data Integration)，又称贴源数据层。SDI是源系统数据的简单落地。
- DWI (Data Warehouse Integration)，又称数据整合层。DWI整合多个源系统数据，对源系统进来的数据进行整合、清洗，并基于三范式进行关系建模。
- DWR (Data Warehouse Report)，又称数据报告层。DWR基于多维模型，和DWI层数据粒度保持一致。
- DM (Data Mart)，又称数据集市。DM面向展现层，数据有多级汇总。
创建数据库的操作，一般您需要在数据湖产品中完成。
在本示例中，您可以参考以下任意一种方式在MRS Hive中创建数据库。
- 您可以在DataArts Studio数据开发模块中，可视化方式创建数据库，具体操作请参见[新建数据库](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0405.html)章节。
- 您可以通过在DataArts Studio数据开发模块或MRS客户端上，开发并执行用于创建数据库的SQL脚本，从而创建数据库。在DataArts Studio数据开发模块开发脚本的具体操作请参见[开发SQL脚本](https://support.huaweicloud.com/zh-cn/usermanual-dataartsstudio/dataartsstudio_01_0424.html)章节；在MRS客户端开发脚本的具体操作请参见[从零开始使用Hive](https://support.huaweicloud.com/cmpntguide-mrs/mrs_01_0442.html)章节。创建数据库的Hive SQL命令如下所示：
  ```
  --创建SDI贴源层数据库
  CREATE DATABASE demo_sdi_db;
  --创建DWI多源整合层数据库
  CREATE DATABASE demo_dwi_db;
  --创建DWR明细数据层数据库
  CREATE DATABASE demo_dwr_db;
  --创建DM数据集市层数据库
  CREATE DATABASE demo_dm_db;
  ```
  
 
#### 创建数据表
基于样例数据，创建一个原始表，用于存储原始数据。从文件迁移到数据库的场景，您需要预先创建目标数据表。由于本示例的数据源源端为OBS上的CSV文件，而非数据库，在使用DataArts Studio数据集成将数据迁移上云时，不支持自动创建目标表的功能，因此，您需要在目的端（MRS服务）先建好表。
![](https://support.huaweicloud.com/qs-dataartsstudio/public_sys-resources/note_3.0-zh-cn.png)
在使用DataArts Studio进行数据集成时，关系型数据库之间的迁移和关系型数据库到Hive的迁移支持自动创建目标表。这种情况下可以不提前在目的端数据库中预先创建目标表。
执行如下SQL语句，在demo_sdi_db数据库中，创建一个原始表，用于存储原始数据。
在本示例中，您可以参考以下任意一种方式在MRS Hive中创建数据表。
- 您可以在DataArts Studio数据开发模块中，可视化方式创建数据表，具体操作请参见[新建数据表](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0416.html)章节。
- 您可以通过在DataArts Studio数据开发模块或MRS客户端上，开发并执行用于创建数据表的SQL脚本，从而创建数据表。在DataArts Studio数据开发模块开发脚本的具体操作请参见[开发SQL脚本](https://support.huaweicloud.com/zh-cn/usermanual-dataartsstudio/dataartsstudio_01_0424.html)章节；在MRS客户端开发脚本的具体操作请参见[从零开始使用Hive](https://support.huaweicloud.com/cmpntguide-mrs/mrs_01_0442.html) 在demo_sdi_db数据库中创建一个原始数据表的Hive SQL命令如下所示：
  ```
  DROP TABLE IF EXISTS `sdi_taxi_trip_data`;
  CREATE TABLE demo_sdi_db.`sdi_taxi_trip_data` (
    `VendorID` BIGINT COMMENT '',
    `tpep_pickup_datetime` TIMESTAMP COMMENT '',
    `tpep_dropoff_datetime` TIMESTAMP COMMENT '',
    `passenger_count` BIGINT COMMENT '',
    `trip_distance` DECIMAL(10,2) COMMENT '',
    `ratecodeid` BIGINT COMMENT '',
    `store_fwd_flag` STRING COMMENT '',
    `PULocationID` STRING COMMENT '',
    `DOLocationID` STRING COMMENT '',
    `payment_type` BIGINT COMMENT '',
    `fare_amount` DECIMAL(10,2) COMMENT '',
    `extra` DECIMAL(10,2) COMMENT '',
    `mta_tax` DECIMAL(10,2) COMMENT '',
    `tip_amount` DECIMAL(10,2) COMMENT '',
    `tolls_amount` DECIMAL(10,2) COMMENT '',
    `improvement_surcharge` DECIMAL(10,2) COMMENT '',
    `total_amount` DECIMAL(10,2) COMMENT ''
  );
  ```
  
 
