本文为您介绍如何通过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模式)。
操作步骤
执行结果
- 单击左侧导航栏中的临时查询。
- 选择
- 编写并执行SQL语句,查看导入hive_doc_good_sale的数据。SQL语句如下所示:
--查看是否成功写入MaxCompute。 select * from hive_doc_good_sale where pt=1;
您也可以在odpscmd命令行工具中输入
select * FROM hive_doc_good_sale where pt =1;
,查询表结果。
如果您想实现MaxCompute数据迁移至Hadoop,步骤与上述步骤类似,不同的是同步脚本内的reader和writer对象需要对调,具体实现脚本如下。
{
"configuration": {
"reader": {
"plugin": "odps",
"parameter": {
"partition": "pt=1",
"isCompress": false,
"datasource": "odps_first",
"column": [
"create_time",
"category",
"brand",
"buyer_id",
"trans_num",
"trans_amount",
"click_cnt"
],
"table": "hive_doc_good_sale"
}
},
"writer": {
"plugin": "hdfs",
"parameter": {
"path": "/user/hive/warehouse/hive_doc_good_sale",
"fileName": "pt=1",
"datasource": "HDFS_data_source",
"column": [
{
"name": "create_time",
"type": "string"
},
{
"name": "category",
"type": "string"
},
{
"name": "brand",
"type": "string"
},
{
"name": "buyer_id",
"type": "string"
},
{
"name": "trans_num",
"type": "BIGINT"
},
{
"name": "trans_amount",
"type": "DOUBLE"
},
{
"name": "click_cnt",
"type": "BIGINT"
}
],
"defaultFS": "hdfs://47.99.162.100:9000",
"writeMode": "append",
"fieldDelimiter": ",",
"encoding": "UTF-8",
"fileType": "text"
}
},
"setting": {
"errorLimit": {
"record": "1000"
},
"speed": {
"throttle": false,
"concurrent": 1,
"mbps": "1",
}
}
},
"type": "job",
"version": "1.0"
}
您需要参见HDFS Writer,在运行上述同步任务前,对Hadoop集群进行设置。在运行同步任务后,手动复制同步过去的文件。