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
如果有写的不对的地方,欢迎大家指正,如果有什么疑问,可以加QQ群:340297350,更多的Flink和spark的干货可以加入下面的星球