阿里云AnalyticDB数据导出到E-MapReduce实践

阿里云的分析型数据库(AnalyticDB)和E-MapReduce(简称EMR)在大数据场景下非常有用,本文将介绍如何尝试打通两个产品,将通过EMR中自带的开源工具Sqoop来完成这个任务。

AnalyticDB数据准备

DMS For Analytic DB控制台可以新建数据库和表。数据库和表名分别是:

  • 数据库:test_emr_0
  • 数据表:test1(注意新建表的时候选择更新方式为“实时更新”,这样就可以在DMS里增加数据)
CREATE TABLE test_emr_0.test1 (
a varchar NOT NULL , 
b int NOT NULL , 
primary key (a)
) 
PARTITION BY HASH KEY(a) PARTITION NUM 100
TABLEGROUP test_group
OPTIONS(UPDATETYPE='realtime');

插入数据

insert into test1 (a, b) values ('ads', 1);
insert into test1 (a, b) values ('bds', 2);
insert into test1 (a, b) values ('emr', 3);
insert into test1 (a, b) values ('oss', 4);
insert into test1 (a, b) values ('hadoop', 5);

注意:因为Sqoop工具访问AnalyticDB时使用更加通用的SQL格式,所以默认的LM计算引擎并不适合。需要你提工单将分析型数据库的默认引擎修改成MPP

网络环境准备

AnalyticDB 默认可以用公网访问,比如刚才新建的数据库可用如下地址访问到:test-emr-0-6e2c83b1.cn-hangzhou-1.ads.aliyuncs.com。但是EMR环境只有Master节点可以访问公网,为了使用Sqoop工具(Sqoop作业运行在Worker节点上),需要使用AnalyticDB VPC网络功能,打通EMR VPC网络和AnalyticDB的网络环境。

临时方案也可以为每台EMR worker节点绑定弹性VIP,这样所有的节点都有了公网访问能力(不推荐)。

从AnalyticDB导入数据到Hive

你可以登录EMR Master节点,也可以使用EMR执行计划作业启动Sqoop程序。

下面的命令将AnalyticDB中的test1表导入到EMR Hive中同名表:

sqoop import 
  --connect jdbc:mysql://test-emr-0-6e2c83b1.cn-hangzhou-1.ads.aliyuncs.com:10152/test_emr_0 
  --username <access-key-id> --password <access-key-secret> 
  --table test1 --fields-terminated-by '\001' 
  --hive-import --target-dir /user/hive/warehouse/test1 
  --hive-table test1 --columns a,b --split-by a

看一下Hive表的导入结果:

$ hive -e "select * from test1"
Logging initialized using configuration in file:/etc/ecm/hive-conf-2.3.2-1.0.1/hive-log4j2.properties Async: true
OK
ads     1
bds     2
hadoop  5
emr     3
oss     4
Time taken: 3.602 seconds, Fetched: 5 row(s)

总结

本文介绍了AnalyticDB导出数据到EMR Hive表的过程,希望对你有帮助。

上一篇:2019阿里云双11拼团-爆款云服务器1折,全场冰点钜惠,再瓜分100万现金!


下一篇:安防大数据下全新智慧交通的需求分析