本文向您详细介绍如何将 Hadoop Hive 数据迁移到阿里云MaxCompute大数据计算服务上。html
在进行 Hadoop Hive 数据迁移前,您须要保证本身的Hadoop集群环境正常。本文使用的Hadoop环境:sql
Hive脚本:服务器
CREATE TABLE IF NOT EXISTS hive_sale( create_time timestamp, category STRING, brand STRING, buyer_id STRING, trans_num BIGINT, trans_amount DOUBLE, click_cnt BIGINT ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' lines terminated by '\n'; insert into hive_sale values ('2019-04-14','外套','品牌A','lilei',3,500.6,7), ('2019-04-15','生鲜','品牌B','lilei',1,303,8), ('2019-04-16','外套','品牌C','hanmeimei',2,510,2), ('2019-04-17','卫浴','品牌A','hanmeimei',1,442.5,1), ('2019-04-18','生鲜','品牌D','hanmeimei',2,234,3), ('2019-04-19','外套','品牌B','jimmy',9,2000,7), ('2019-04-20','生鲜','品牌A','jimmy',5,45.1,5), ('2019-04-21','外套','品牌E','jimmy',5,100.2,4), ('2019-04-22','生鲜','品牌G','peiqi',10,5560,7), ('2019-04-23','卫浴','品牌F','peiqi',1,445.6,2), ('2019-04-24','外套','品牌A','ray',3,777,3), ('2019-04-25','卫浴','品牌G','ray',3,122,3), ('2019-04-26','外套','品牌C','ray',1,62,7);
登陆Hadoop集群,建立Hive SQL脚本,执行Hive命令完成脚本初始化:网络
hive -f hive_data.sql
查询Table:ide
hive -e 'show tables'; hive -e 'select * from hive_sale';
开通MaxCompute,请参考:https://help.aliyun.com/document_detail/58226.html工具
安装并配置MaxCompute客户端,请参考:https://help.aliyun.com/document_detail/27804.htmloop
CREATE TABLE IF NOT EXISTS maxcompute_sale( create_time STRING, category STRING, brand STRING, buyer_id STRING, trans_num BIGINT, trans_amount DOUBLE, click_cnt BIGINT );
在建表过程当中,须要考虑到Hive数据类型 与 MaxCompute数据类型的映射,可参考:
https://help.aliyun.com/document_detail/54081.html测试
上述经过odpscmd命令行工具完成,命令行工具安装和配置请参考:https://help.aliyun.com/document_detail/27804.html大数据
注意:MaxCompute2.0支持的数据类型,包括基本数据类型和复杂类型,详见:
https://help.aliyun.com/document_detail/27821.html阿里云
进入Hive,执行SQL语句,下面咱们将导出到本地的数据按行以逗号进行分隔:
insert overwrite local directory '/home/sixiang/' row format delimited fields terminated by ',' select * from hive_sale;
查看数据文件:
进入MaxCompute控制台,执行Tunnel upload命令完成数据上传:
tunnel upload /home/sixiang/000000_0 daniel.maxcompute_sale;
MaxCompute所处的网络环境与Hadoop集群中的DataNode网络一般不可达,可经过自定义资源组的方式,将DataWorks同步任务运行在Hadoop集群的Master节点上(Hadoop集群内Master和DataNode网络可通)
查看Hadoop集群DataNode:执行hadoop dfsadmin –report 命令查看
上图能够看到,DataNode为内网地址,很难与DataWorks默认资源组互通,因此须要设置自定义资源组,将Master Node设置为执行DataWorks数据同步任务的节点。
进入DataWorks数据集成页面,选择资源组,点击新增资源组,以下图所示:
在添加服务器步骤中,须要输入机器的UUID和IP等信息,机器IP需填写MasterNode公网IP(内网IP可能不通)。
机器的UUID须要进入MasterNode管理终端,经过命令dmidecode | grep UUID获取,以下所示:
完成添加服务器后,需保证Master Node与DataWorks网络可联通;按照提示安装自定义资源组agent,观察当前状态为可用,说明新增自定义资源组成功。
DataWorks新建项目后,默认设置本身为数据源odps_first;所以咱们只需添加Hadoop集群数据源,在DataWorks数据集成页面,点击数据源 > 新增数据源,在弹框中选择HDFS类型的数据源。
在弹出窗口中,填写“数据源名称”、“DefaultFS”
若是Hadoop集群为HA集群,则此处地址为hdfs://IP:8020,若是Hadoop集群为非HA集群,则此处地址为hdfs://IP:9000。在本文中,Hadoop机器与DataWorks经过公网链接,所以此处填写公网IP。
完成配置后,点击测试连通性,若是提示“测试连通性成功”,则说明数据源添加成功。
在DataWorks“数据开发”页面,选择新建数据集成节点-数据同步,在导入模板弹窗选择数据源类型以下:
具体脚本以下:
{ "configuration": { "reader": { "plugin": "hdfs", "parameter": { "path": "/user/hive/warehouse/hive_sale/", "datasource": "hadoop_to_odps", "column": [ { "index": 0, "type": "string" }, { "index": 1, "type": "string" }, { "index": 2, "type": "string" }, { "index": 3, "type": "string" }, { "index": 4, "type": "long" }, { "index": 5, "type": "double" }, { "index": 6, "type": "long" } ], "defaultFS": "hdfs://xxx.xxx.xxx.xxx:9000", "fieldDelimiter": ",", "encoding": "UTF-8", "fileType": "text" } }, "writer": { "plugin": "odps", "parameter": { "partition": "", "truncate": false, "datasource": "odps_first", "column": [ "create_time", "category", "brand", "buyer_id", "trans_num", "trans_amount", "click_cnt" ], "table": "maxcompute_sale" } }, "setting": { "errorLimit": { "record": "1000" }, "speed": { "throttle": false, "concurrent": 1, "mbps": "1", "dmu": 1 } } }, "type": "job", "version": "1.0" }
其中,path参数为数据在Hadoop集群中存放的位置,您能够在登陆Master Node后,使用
hdfs dfs –ls /user/hive/warehouse/hive_sale 命令确认。
完成配置后,点击运行。若是提示任务运行成功,则说明同步任务已完成。
在DataWorks数据开发/临时查询,执行select * FROM hive_sale 验证结果,以下图所示:
固然,也能够经过在odpscmd命令行工具中SQL查询表结果:
原文连接 本文为云栖社区原创内容,未经容许不得转载。