DataX是阿里开源数据同步工具,实现异构数据源的数据同步,Github地址:https://github.com/alibaba/DataX,企业存储离线数据到数仓,但是没办法对接业务,本次实践主要是运用DataX实现数据从数仓导入到MySQL,从而对接业务,另外,对数仓数据的流出进行管理。
一般从数仓数据导入到MySQL中,可以从hive查询存储到一个文件里面,如果是数据量比较大的情况下先将文件按一定行数切分为多个文件,然后遍历文件往MySQL中导入,这种方式虽然简单,缺点在于对于每一个导入需求,都需要写一个job,并且每次都会产生临时文件,mysql load会比较占用资源,之所以选择了DataX,因为它能实现hdfs导入MySQL,速度快,能实现增量全量,可以分表,能减少很多技术的实现成本。
dataX的使用非常的简单,下面看一下从mysql导入到另一个mysql的demo:
{ "job": { "setting": { "speed": { "channel": 3 }, "errorLimit": { "record": 0, "percentage": 0.02 } }, "content": [{ "reader": { "name": "mysqlreader", "parameter": { "username": "", "password": "", "column": [ "coupon_id", "effective_type", "effective_price", "save_type", "save_price", "receive_way", "effective_way", "leave_code", "now()" ], "connection": [{ "table": [ "" ], "jdbcUrl": [ "" ] }] } }, "writer": { "name": "mysqlwriter", "parameter": { "writeMode": "insert", "username": "", "password": "", "column": [ "coupon_id", "effective_type", "effective_price", "save_type", "save_price", "receive_way", "effective_way", "leave_code", "enter_time" ], "connection": [{ "jdbcUrl": "", "table": [ "" ] }] } } }] } }
用户名密码,表名,和jdbcUrl自己配置一下就可以了.
启动脚本:python datax.py xxxxx.json