本文为您介绍如何通过DataWorks数据同步功能,迁移HDFS数据至MaxCompute,或从MaxCompute迁移数据至HDFS。无论您使用Hadoop还是Spark,均可以与MaxCompute进行双向同步。

前提条件

  • 开通MaxCompute并创建项目。

    本文以在华东1(杭州)地域创建项目bigdata_DOC为例。详情请参见开通MaxCompute

  • 搭建Hadoop集群。

    进行数据迁移前,您需要保证Hadoop集群环境正常。本文使用阿里云EMR服务自动化搭建Hadoop集群,详情请参见创建集群

    本文使用的EMR Hadoop版本信息如下:
    • EMR版本:EMR-3.11.0
    • 集群类型:HADOOP
    • 软件信息:HDFS2.7.2/YARN2.7.2/Hive2.3.3/Ganglia3.7.2/Spark2.2.1/HUE4.1.0/Zeppelin0.7.3/Tez0.9.1/Sqoop1.4.6/Pig0.14.0/ApacheDS2.0.0/Knox0.13.0

    Hadoop集群使用经典网络,地域为华东1(杭州),主实例组ECS计算资源配置公网及内网IP,高可用选择为否(非HA模式)。

步骤一:数据准备

  1. Hadoop集群创建测试数据。
    1. 通过阿里云账号登录阿里云E-MapReduce控制台
    2. 在EMR控制台界面,选择目标项目并新建作业doc。本例中Hive建表语句如下。 关于EMR上新建作业更多信息请参见作业编辑
      CREATE TABLE IF NOT
      EXISTS hive_doc_good_sale(
         create_time timestamp,
         category STRING,
         brand STRING,
         buyer_id STRING,
         trans_num BIGINT,
         trans_amount DOUBLE,
         click_cnt BIGINT
         )
         PARTITIONED BY (pt string) ROW FORMAT
      DELIMITED FIELDS TERMINATED BY ',' lines terminated by '\n';
    3. 单击运行,出现Query executed successfully提示,则说明成功在EMR Hadoop集群上创建了表hive_doc_good_sale。
      创建表
    4. 插入测试数据。您可以选择从OSS或其他数据源导入测试数据,也可以手动插入少量的测试数据。本文中手动插入数据如下。
      insert into
      hive_doc_good_sale PARTITION(pt =1 ) values('2018-08-21','外套','品牌A','lilei',3,500.6,7),('2018-08-22','生鲜','品牌B','lilei',1,303,8),('2018-08-22','外套','品牌C','hanmeimei',2,510,2),(2018-08-22,'卫浴','品牌A','hanmeimei',1,442.5,1),('2018-08-22','生鲜','品牌D','hanmeimei',2,234,3),('2018-08-23','外套','品牌B','jimmy',9,2000,7),('2018-08-23','生鲜','品牌A','jimmy',5,45.1,5),('2018-08-23','外套','品牌E','jimmy',5,100.2,4),('2018-08-24','生鲜','品牌G','peiqi',10,5560,7),('2018-08-24','卫浴','品牌F','peiqi',1,445.6,2),('2018-08-24','外套','品牌A','ray',3,777,3),('2018-08-24','卫浴','品牌G','ray',3,122,3),('2018-08-24','外套','品牌C','ray',1,62,7) ;
    5. 完成插入数据后,您可以执行select * from hive_doc_good_sale where pt =1;语句,检查Hadoop集群表中是否已存在数据可以用于迁移。
      验证
  2. 利用DataWorks新建目标表。
    1. 登录DataWorks控制台
    2. 在左侧导航栏,单击工作空间列表
    3. 工作空间列表页面,单击相应工作空间后的数据开发
    4. 数据开发页面,右键单击目标工作流程,选择新建 > MaxCompute >
    5. 在弹出的新建表对话框中,填写表名,并单击提交
    6. 新建表页面,选择DDL模式
    7. DDL模式对话框中输入建表语句,单击生成表结构,并确认操作。本示例的建表语句如下所示。
      CREATE TABLE IF NOT EXISTS hive_doc_good_sale(
         create_time string,
         category STRING,
         brand STRING,
         buyer_id STRING,
         trans_num BIGINT,
         trans_amount DOUBLE,
         click_cnt BIGINT
         )
         PARTITIONED BY (pt string) ;

      在建表过程中,需要考虑Hive数据类型与MaxCompute数据类型的映射,当前数据映射关系请参见数据类型映射表

      由于本文使用DataWorks进行数据迁移,而DataWorks数据同步功能暂不支持TIMESTAMP类型数据。因此在DataWorks建表语句中,将create_time设置为STRING类型。

      上述步骤同样可通过odpscmd命令行工具完成,命令行工具安装和配置请参见安装并配置MaxCompute客户端