数据采集在数仓中是指将数据从源数据端采集到目标端的过程。涉及到数据库到数据库的数据同步问题,DataX是其中的一种工具,DataX是一个异构数据源离线同步工具。
为解决异构数据源同步问题,DataX将复杂的网状同步链路变成了星型数据链路,DataX作为中间传输载体负责连接各种数据源。
DataX目前已经有较全面的插件体系,主流的RDBMS数据库,NOSQL,大数据计算系统都已经接入。
举例来说,用户提交了一个 DataX 作业,并且配置了 20 个并发,目的是将一个 100 张
分表的 mysql 数据同步到 odps 里面。 DataX 的调度决策思路是:
1)DataXJob 根据分库分表切分成了 100 个 Task。
2)根据 20 个并发,DataX 计算共需要分配 4 个 TaskGroup。
3)4 个 TaskGroup 平分切分好的 100 个 Task,每一个 TaskGroup 负责以 5 个并发共计运
行 25 个 Task。
下载地址:http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz
源码地址:https://github.com/alibaba/DataX
将下载好的 datax.tar.gz 上传到 hadoop102 的/opt/software
2)解压 datax.tar.gz 到/opt/module
tar -zxvf datax.tar.gz -C /opt/module/
3)运行自检脚本
cd /opt/module/datax/bin/
python datax.py /opt/module/datax/job/job.json
cd /opt/module/datax/bin
python datax.py -r streamreader -w streamwriter
vim stream2stream.json
内容
{
"job": {
"content": [
{
"reader": {
"name": "streamreader",
"parameter": {
"sliceRecordCount": 10,
"column": [
{
"type": "long",
"value": "10"
},
{
"type": "string",
"value": "hello,DataX"
}
]
}
},
"writer": {
"name": "streamwriter",
"parameter": {
"encoding": "UTF-8",
"print": true
}
}
}
],
"setting": {
"speed": {
"channel": 1
}
}
}
}
3)运行
/opt/module/datax/bin/datax.py /opt/module/datax/job/stream2stream.json
创建student表并插入数据
create database datax;
use database;
create table student(id int,name varchar(20));
insert into student values(1001,'zhangsan'),(1002,'lisi'),(1003,'wangwu');
vim /opt/module/datax/job/mysql2hdfs.json
{
"job": {
"content": [
{
"reader": {
"name": "mysqlreader",
"parameter": {
"column": [
"id",
"name"
],
"connection": [
{
"jdbcUrl": [
"jdbc:mysql://hadoop102:3306/datax"
],
"table": [
"student"
]
}
],
"username": "root",
"password": "000000"
}
},
"writer": {
"name": "hdfswriter",
"parameter": {
"column": [
{
"name": "id",
"type": "int"
},
{
"name": "name",
"type": "string"
}
],
"defaultFS": "hdfs://hadoop102:9000",
"fieldDelimiter": "\t",
"fileName": "student.txt",
"fileType": "text",
"path": "/",
"writeMode": "append"
}
}
}
],
"setting": {
"speed": {
"channel": "1"
}
}
}
}
DataX是阿里巴巴开源的一个异构数据源离线同步工具。
本文学习参考尚硅谷Datax课程