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

步骤6:数据开发

DataArts Studio数据开发模块可管理多种大数据服务,提供一站式的大数据开发环境、全托管的大数据调度能力,极大降低用户使用大数据的门槛,帮助您快速构建大数据处理中心。

使用DataArts Studio数据开发,用户可进行数据管理、数据集成、脚本开发、作业开发、版本管理、作业调度、运维监控等操作,轻松完成整个数据的处理分析流程。

DataArts Studio数据开发模块中,您将完成以下步骤:

  1. 数据管理
  2. 脚本开发
  3. 作业开发
    1. 历史数据到源数据表,使用数据集成将历史数据从OBS导入到SDI贴源层的原始数据表。
    2. 历史数据清洗,使用数据开发的MRS Hive SQL脚本将源数据表清洗之后导入DWI层的标准出行数据表。
    3. 将基础数据插入维度表中。
    4. 将DWI层的标准出行数据导入DWR层的事实表中。
    5. 数据汇总,通过Hive SQL将出租车行程订单事实表中的数据进行汇总统计并写入汇总表。
  4. 运维调度

数据管理

数据管理功能可以协助用户快速建立数据模型,为后续的脚本和作业开发提供数据实体。主要包含建立数据连接、新建数据库、新建数据表等操作。

在本例中,相关数据管理操作已经在步骤2:准备工作中完成,本步骤可跳过。

脚本开发

  1. 登录DataArts Studio控制台。选择实例,点击“进入控制台”,选择对应工作空间的“数据开发”模块,进入数据开发页面。

    图1 选择数据开发

  2. 在左侧导航栏中,单击“脚本开发”,再右键单击“脚本”选择新建目录,在弹出框中输入目录名称例如“transport”,然后单击“确定”
  3. 在脚本目录树中,右键单击目录名称transport,选择菜单“新建Hive SQL脚本”
  4. 在新建的HIVE_untitled脚本中,选择数据连接mrs_hive_link,选择数据库demo_dwr_db,然后输入脚本内容。

    图2 编辑脚本

    该脚本用于将付款方式、费率代码、供应商的基本信息写入到相应的维度表中。脚本内容如下:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    truncate table dim_payment_type;
    truncate table dim_rate_code;
    truncate table dim_vendor;
    
    INSERT INTO dim_payment_type VALUES ("1","Credit card");
    INSERT INTO dim_payment_type VALUES ("2","Cash");
    INSERT INTO dim_payment_type VALUES ("3","No charge");
    INSERT INTO dim_payment_type VALUES ("4","Dispute");
    INSERT INTO dim_payment_type VALUES ("5","Unknown");
    INSERT INTO dim_payment_type VALUES ("6","Voided trip");
    
    INSERT INTO dim_rate_code VALUES ("1","Standard rate");
    INSERT INTO dim_rate_code VALUES ("2","JFK");
    INSERT INTO dim_rate_code VALUES ("3","Newark");
    INSERT INTO dim_rate_code VALUES ("4","Nassau or Westchester");
    INSERT INTO dim_rate_code VALUES ("5","Negotiated fare");
    INSERT INTO dim_rate_code VALUES ("6","Group ride");
    
    INSERT INTO dim_vendor VALUES ("1","A Company");
    INSERT INTO dim_vendor VALUES ("2","B Company");
    

  5. 单击“运行”按钮,测试脚本是否正确。

    图3 运行脚本

  6. 测试通过后,单击“保存”按钮,在弹出框中输入脚本名称如:demo_taxi_dim_data,选择保存的脚本路径并单击“提交”按钮提交版本。

    图4 保存脚本

    图5 提交脚本版本

  7. 重复4~6的步骤,完成如下脚本的创建。

    1. 脚本名称:demo_etl_sdi_dwi,该脚本用于将SDI贴源层的原始数据写入到DWI层的标准出行数据表中。脚本内容如下:
       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      46
      47
      48
      49
      INSERT INTO
        demo_dwi_db.dwi_taxi_trip_data
      SELECT
        `vendorid`,
        cast(
          regexp_replace(
            `tpep_pickup_datetime`,
            '(\\d{2})/(\\d{2})/(\\d{4}) (\\d{2}):(\\d{2}):(\\d{2}) (.*)',
            '$3-$1-$2 $4:$5:$6'
          ) as TIMESTAMP
        ),
        cast(
          regexp_replace(
            `tpep_dropoff_datetime`,
            '(\\d{2})/(\\d{2})/(\\d{4}) (\\d{2}):(\\d{2}):(\\d{2}) (.*)',
            '$3-$1-$2 $4:$5:$6'
          ) as TIMESTAMP
        ),
        `passenger_count`,
        `trip_distance`,
        `ratecodeid`,
        `store_fwd_flag`,
        `pulocationid`,
        `dolocationid`,
        `payment_type`,
        `fare_amount`,
        `extra`,
        `mta_tax`,
        `tip_amount`,
        `tolls_amount`,
        `improvement_surcharge`,
        `total_amount`
      FROM
        demo_sdi_db.sdi_taxi_trip_data
      WHERE
        trip_distance > 0
        and total_amount > 0
        and payment_type in (1, 2, 3, 4, 5, 6)
        and vendorid in (1, 2)
        and ratecodeid in (1, 2, 3, 4, 5, 6)
        and tpep_pickup_datetime < tpep_dropoff_datetime
        and tip_amount >= 0
        and fare_amount >= 0
        and extra >= 0
        and mta_tax >= 0
        and tolls_amount >= 0
        and improvement_surcharge >= 0
        and total_amount >= 0
        and (fare_amount + extra + mta_tax + tip_amount + tolls_amount + improvement_surcharge) = total_amount;
      
    2. 脚本名称:demo_etl_dwi_dwr_fact,该脚本用于将DWI层的标准出行数据写入到DWR层的事实表中。脚本内容如下:
       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      INSERT INTO
        demo_dwr_db.fact_stroke_order
      SELECT
        rate_code_id,
        vendor_id,
        payment_type,
        tpep_dropoff_datetime,
        tpep_pickup_datetime,
        pu_location_id,
        do_location_id,
        fare_amount,
        extra,
        mta_tax,
        tip_amount,
        tolls_amount,
        improvement_surcharge,
        total_amount
      FROM
        demo_dwi_db.dwi_taxi_trip_data;
      

作业开发

  1. DataArts Studio数据开发控制台的左侧导航栏中,单击“作业开发”,然后右键单击“作业”选择菜单“新建目录”,在目录树下根据需要创建作业目录,例如“transport”。
  2. 右键单击作业目录,在弹出菜单中单击新建作业
    图6 作业

  3. 在弹出弹框中输入“作业名称”如demo_taxi_trip_data,“作业类型”选择“批处理”,其他参数保留默认值,单击“确定”完成批作业创建。
    图7 新建批处理作业

  4. 如下图所示,编排批作业。
    图8 编排作业

    每个节点配置如下:

    • source_sdi节点:为CDM Job节点,通过CDM节点将OBS上的数据导入到MRS Hive的原始表中。其中CDM集群名称和作业名称分别选择在步骤3:数据集成中的集群和迁移作业(图中仅为示例,以实际集群名和迁移作业名为准)。
      图9 source_sdi节点属性
    • demo_etl_sdi_dwi节点:为MRS Hive SQL节点,用于清洗过滤SDI贴源层上原始表中的数据,将合法数据写入数据架构中DWI层标准出行数据表dwi_taxi_trip_data中。其中,“SQL脚本”请选择在脚本开发中创建的脚本demo_etl_sdi_dwi。
      图10 demo_etl_sdi_dwi节点属性

    • dwi数据监控节点:为Data Quality Monitor节点,用于监控DWI层的标准出行数据的质量。其中,“数据质量规则名称”请选择发布DWI层标准出行数据表时自动生成的质量规则“标准出行数据”
      图11 dwi数据监控节点

    • demo_etl_dwi_dwr_fact节点:为MRS Hive SQL节点,用于将DWI上的原始数据写入DWR层的事实表fact_stroke_order中。其中,“SQL脚本”请选择在脚本开发中创建的脚本demo_etl_dwi_dwr_fact。
      图12 demo_etl_dwi_dwr_fact节点属性

    • 码表维度数据填充节点:为MRS Hive SQL节点,用于将付款方式、费率代码和供应商的集成数据写入DWR层相应的维度表中。其中,“SQL脚本”请选择在脚本开发中创建的脚本demo_taxi_dim_data。
      图13 码表维度数据填充节点属性

    • 等待节点:不做任何事情,等待前面的节点运行结束。
      图14 等待节点
    • 按付款方式汇总统计节点:为MRS Hive SQL节点,按付款方式维度统计汇总截止到当前日期的收入。该节点是从发布汇总表“付款方式统计汇总”时自动生成的数据开发作业(作业名称以demo_dm_db_dws_payment_type_开头,命名规则为“数据库名称_汇总表编码”)中拷贝的,拷贝节点后需手动配置该节点的“数据连接”“数据库”参数,“数据库”需设置为事实表所在的数据库。

      数据开发作业自动生成功能需在管理配置中心中勾选“创建数据开发作业”实现。

      图15 按付款方式汇总统计节点属性

    • 按费率汇总统计节点:为MRS Hive SQL节点,按费率代码维度统计汇总截止到当前日期的收入。该节点是从发布汇总表“费率统计汇总”时自动生成的数据开发作业(作业名称以demo_dm_db_dws_rate_code_开头,命名规则为“数据库名称_汇总表编码”)中拷贝的,拷贝节点后需手动配置该节点的“数据连接”“数据库”参数,“数据库”需设置为事实表所在的数据库。
      图16 按费率汇总统计节点属性

    • 按供应商汇总统计节点:为MRS Hive SQL节点,按供应商维度统计汇总截止到当前日期各时间维度的收入。该节点是从发布汇总表“供应商统计汇总”时自动生成的数据开发作业(作业名称以demo_dm_db_dws_vendor_开头,命名规则为“数据库名称_汇总表编码”)中拷贝的,拷贝节点后需手动配置该节点的“数据连接”“数据库”参数,“数据库”需设置为事实表所在的数据库。
      图17 按供应商汇总统计节点属性

    • Dummy_finish节点:不做任何事情,作为作业结束的标记。
      图18 Dummy_finish节点
  5. 作业编排好之后,您可以通过测试运行来测试作业编排是否正确。
  6. 您可以根据需要,配置作业的调度方式。单击右侧“调度配置”页签,展开配置页面。当前支持单次调度、周期调度和事件驱动调度作业。
    图19 配置作业的调度方式

  7. 调度配置完成后,您需要单击“保存”按钮保存作业并单击“提交”按钮提交作业版本。然后单击“执行调度”来启动作业的调度。
    图20 保存并提交作业与执行调度

运维调度

您可以通过运维调度功能,查看作业以及作业实例的运行状态。

  1. 在数据开发主界面的左侧导航栏,选择运维调度 > 作业监控
  2. 单击“批作业监控”页签,进入批作业监控界面。
  3. 批作业监控提供了对批处理作业的状态进行监控的能力。您可以查看批作业的调度状态、调度频率、调度开始时间等信息,勾选作业名称前的复选框,并进行“执行调度”/“停止调度”/“通知配置”,相应操作。
    图21 批量处理作业

  4. 单击左侧导航栏,选择“运维调度 > 实例监控”,进入实例监控界面。
    在运维调度的“实例监控”页面,可以查看作业实例的运行详情以及运行日志等。
    图22 实例监控

  5. 作业运行成功后,您可以在DataArts Studio数据目录中查看汇总表的数据预览,具体操作请参见步骤8:数据目录管理。您也可以在数据开发的“脚本开发”页面新建一个Hive SQL脚本,执行以下命令查询结果,执行成功后返回类似如下的结果:
    1
    SELECT * FROM demo_dm_db.dws_payment_type;
    
    图23 查询结果