更新时间:2024-11-12 GMT+08:00

步骤2:数据准备

使用DataArts Studio前的准备

如果您是第一次使用DataArts Studio,请参考购买并配置DataArts Studio章节完成注册华为账号购买DataArts Studio实例、创建工作空间等一系列操作。然后进入到对应的工作空间,即可开始使用DataArts Studio

本入门示例,为了演示DataArts Studio数据治理的全流程,华为账号需要具有DataArts Studio的所有执行权限。

准备数据源

本入门指南以某市出租车出行数据为例,统计某出租车供应商2017年度的运营数据。

本示例演示的原始数据来自于NYC开放数据平台

为方便演示,您无需获取原始数据,本示例提供了模拟原始数据的样例数据供您使用。您可以参考下文的样例数据准备方法,将样例数据存储为CSV文件,将CSV文件上传至OBS服务中,然后再使用DataArts Studio数据集成将样例数据集成到其他云服务中。

样例数据准备方法如下:

  1. 创建一个CSV文件(UTF-8无bom格式),文件名称为“2017_Yellow_Taxi_Trip_Data.csv”,将后文提供的样例数据复制粘贴到CSV文件中,然后保存CSV文件。

    以下是Windows下生成.csv文件的办法之一:
    1. 使用文本编辑工具(例如记事本等)新建一个txt文档,将后文提供的样例数据复制进文档中。注意复制后检查数据的行数及数据分行的正确性(注意,如果是从PDF文档中复制样例数据,单行的数据过长时会产生换行,需手动重新调整为单行)。
    2. 单击文件 > 另存为,在弹出的对话框中,“保存类型”选择为“所有文件(*.*)”,在“文件名”处输入文件名和.csv后缀,选择UTF-8编码格式(不能带BOM),则能以CSV格式保存该文件。

  2. 将源数据CSV文件上传到OBS服务。

    1. 登录控制台,选择存储 > 对象存储服务 OBS,进入OBS控制台。
    2. 单击“创建桶”,然后根据页面提示配置参数,创建一个名称为“fast-demo”的OBS桶。

      为保证网络互通,OBS桶区域请选择和DataArts Studio实例相同的区域。如果需要选择企业项目,也请选择与DataArts Studio实例相同的企业项目。

      使用OBS控制台创建桶的操作,请参见《对象存储服务控制台指南》中的创建桶

    3. 上传数据到名称为“fast-demo”的OBS桶中。

      使用OBS控制台上传文件的操作,请参见《对象存储服务控制台指南》中的上传文件

样例数据如下。

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支持的数据源章节。

本示例选择MapReduce服务(MRS)的Hive组件作为DataArts Studio平台的数据底座。您需要先创建一个MRS安全集群(即开启“Kerberos认证”的MRS集群,安全性更强),具体操作请参见创建集群

为确保MRS集群与DataArts Studio实例网络互通,MRS集群需满足如下要求:

  • MRS集群必须包含Hive组件。
  • 如需使用基于DataArts Studio数据架构的数据标准自动生成质量作业的功能,MRS集群版本必须是2.0.3及以上版本,集群必须包含Hive和Spark组件,集群总节点数至少4个。本示例需要使用该功能,因此必须满足这个条件。
    如果选择集群后连接失败,请检查MRS集群与作为Agent的CDM实例是否网络互通。网络互通需满足如下条件:
    • DataArts Studio实例(指DataArts Studio实例中的CDM集群)与MRS集群处于不同区域的情况下,需要通过公网或者专线打通网络。通过公网互通时,需确保CDM集群已绑定EIP,MRS集群可以访问公网且防火墙规则已开放连接端口。
    • DataArts Studio实例(指DataArts Studio实例中的CDM集群)与MRS集群同区域情况下,同虚拟私有云、同子网、同安全组的不同实例默认网络互通;如果同虚拟私有云但子网或安全组不同,还需配置路由规则及安全组规则,配置路由规则请参见如何配置路由规则章节,配置安全组规则请参见如何配置安全组规则章节。
    • 此外,还需确保该MRS集群与DataArts Studio工作空间所属的企业项目相同,如果不同,您需要修改工作空间的企业项目。

    当同一Agent连接多个MRS集群时,如果其中一个MRS集群被删除或状态异常,会影响另外一个正常的MRS集群数据连接。因此建议一个Agent对应一个MRS集群数据连接。

在管理中心创建数据连接

准备好数据湖之后,在DataArts Studio管理中心模块中创建数据连接,以便连接作为数据湖的云服务。

  1. 参考访问DataArts Studio实例控制台登录DataArts Studio管理控制台。
  2. DataArts Studio控制台首页,选择对应工作空间的“管理中心”模块,进入管理中心页面。
  3. “数据连接”页面,单击“创建数据连接”按钮。

    图1 数据连接

  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,角色建议全选,然后根据页面提示完成用户的创建。
        • 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用户同步
          • 当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数据连接

创建数据库

根据数据湖治理落地流程,建议您在数据湖中为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数据开发模块中,可视化方式创建数据库,具体操作请参见新建数据库章节。
  • 您可以通过在DataArts Studio数据开发模块或MRS客户端上,开发并执行用于创建数据库的SQL脚本,从而创建数据库。在DataArts Studio数据开发模块开发脚本的具体操作请参见开发SQL脚本章节;在MRS客户端开发脚本的具体操作请参见从零开始使用Hive章节。创建数据库的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服务)先建好表。

在使用DataArts Studio进行数据集成时,关系型数据库之间的迁移和关系型数据库到Hive的迁移支持自动创建目标表。这种情况下可以不提前在目的端数据库中预先创建目标表。

执行如下SQL语句,在demo_sdi_db数据库中,创建一个原始表,用于存储原始数据。

在本示例中,您可以参考以下任意一种方式在MRS Hive中创建数据表。

  • 您可以在DataArts Studio数据开发模块中,可视化方式创建数据表,具体操作请参见新建数据表章节。
  • 您可以通过在DataArts Studio数据开发模块或MRS客户端上,开发并执行用于创建数据表的SQL脚本,从而创建数据表。在DataArts Studio数据开发模块开发脚本的具体操作请参见开发SQL脚本章节;在MRS客户端开发脚本的具体操作请参见从零开始使用Hive 在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 ''
    );