写在前面
- 基于镜像版集群, 通过datax完成 hive(HDFS) 数据同步至 mysql 实验。
- 集群搭建参考博文:
- 提示
- 镜像内置mysql版本:
Server version: 5.7.23 MySQL Community Server (GPL)
- 镜像内置mysql版本:
- 目的
- 实战datax神器
P1: 实验步骤
-
**1 搭建集群环境。**确认在镜像中能正常访问 Hadoop、Hive、MySQL, 详情请查看 利用Python实现Hive UDF ( Docker集群镜像 )。
-
**2 在hive中,构建测试数据。**查询结果如下:
- person.txt 内容:
neil 411326199402110030 pony 41132519950911004x jcak 12312423454556561 tony 412345671234908` neil 411326199402110030 pony 41132519950911004x jcak 12312423454556561 tony 412345671234908 -
3 在mysql中,建立person数据表。
create database datax_test; use datax_test; create table person( name varchar(18), idcard varchar(100) ); -
4 下载 并解压 datax
# 下载命令 wget http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz # 解压命令 tar zxvf datax.tar.gz -
5 配置job hive2mysql.json文件
{ "job": { "setting": { "speed": { "channel": 1 } }, "content": [ { "reader": { "name": "hdfsreader", "parameter": { "path": "user/hive/warehouse/person", "defaultFS": "hdfs://localhost:8020/", "column": [ { "index": 0, "type": "string" }, { "index": 1, "type": "string" } ], "fileType": "text", "encoding": "UTF-8", "fieldDelimiter": "\t" } }, "writer": { "name": "mysqlwriter", "parameter": { "writeMode": "insert", "username": "root", "password": "kngines", "column": [ "name", "idcard" ], "session": [ "set session sql_mode='ANSI'" ], "preSql": [ "delete from person" ], "connection": [ { "jdbcUrl": "jdbc:mysql://localhost:3306/datax_test?useUnicode=true&characterEncoding=gbk", "table": [ "person" ] } ] } } } ] } } -
6 数据同步
- 提示: 注意切换工作路径 !
/usr/bin/python2.7 ./datax.py ../job/hive2mysql.json -
7 同步结果
-
8 同步详情
P2: 其他命令
- 查看表存储路径
show create table person;
- 从本地载入数据至Hive
load data local inpath '/home/datax_test/person.txt' into table person;
最后
- DataX,阿里已开源的内部广泛使用的离线数据同步工具/平台,源码有很多值得学习的地方,只待后续总结、学习、膜拜。
- 小插曲,日常开发中基于Base平台离线加工完成的结果表(海量数据)常同步至ADS,同步工具想必就是DataX,深有体会,熟悉源码定能获益颇多,加油!
- 另,博文很多引用了其他文章,力求不再赘述重复的东西(没含量)。因此,需要的话可参考链接,谢谢!