此处介绍supplier表的导入方式,datax不适合导入太大的数据,1T数据TPCH的supplier共计1.4G,共10240000行的数据。使用datax的导入脚本如下
一、datax安装准备
1.jdk1.8安装
执行java -version 查看工作机器是否有jdk1.8以及以上版本,如果已存在,则忽略
a、离线安装,先上传jdk1.8.0_u331.zip文件至工作机器
mkdir -p /usr/java
unzip jdk1.8.0_u331.zip
cp -rf jdk1.8.0_331 /usr/java
sudo vi /etc/profile
#添加下面4行
export JAVA_HOME=/usr/java/jdk1.8.0_331
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
#保存退出,
source /etc/profile
#输入验证
java -version
b、在线安装,可使用apt、yum命令安装
2.python2.7 安装
优先执行python -v, 如当前机器有python2.7版本,则跳过下面步骤
a、离线安装, 先将Python-2.7.15.zip上传到工作机器
unzip Python-2.7.15.zip
cd Python-2.7.15
./configure --prefix=/usr/local/python2
make
make install
#验证是否安装成功,执行
python2 -V
3. dataX安装
- 将datax.zip 上传到工作机器,(注意:这个附件为删减版,只包含了mysql、txt相关同步插件)(也可以从其他机器同步过来)
- 执行 解压
unzip datax.zip
4、datax 同步
- 进入datax目录
cd datax - 新建同步job文件,后缀为job或者json均可
sudo vi job/mysql2atomdata-op.job
或vi job/mysql2atomdata-op.json
- 填写下列内容,并注意修改配置
datax导入supplier.tbl数据到supplier表的写法如下
(1) 脚本编写
{
"job": {
"content": [{
"reader": {
"name": "txtfilereader",
"parameter": {
"encoding": "UTF-8",
"column": [{ #注supplier共有7列,int类型用long替代,varchar用string替代
"index": 0,
"type": "long"
}, {
"index": 1,
"type": "string"
}, {
"index": 2,
"type": "string"
}, {
"index": 3,
"type": "long"
}, {
"index": 4,
"type": "string"
}, {
"index": 5,
"type": "long"
}, {
"index": 6,
"type": "string"
}],
"path": ["/data8/minio/data/tpch1t/supplier/supplier.tbl"],
"fieldDelimiter": "|",
"skipHeader":"false"
}
},
"writer": {
"name": "mysqlwriter",
"parameter": {
"writeMode":"insert",
"username":"stoneatom",
"password":"Aa123456",
"column":["s_suppkey","s_name","s_address","s_nationkey","s_phone","s_acctbal","s_comment"],
"session":["set session sql_mode='ANSI'"],
"connection":[{
"jdbcUrl":"jdbc:mysql://192.168.30.118:9030/tpch1t?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC",
"table":["supplier"]
}]
}
}
}],
"setting": {
"speed": {
"channel": "1"
}
}
}
}
注意事项:
● reader为mysql数据源,writer为目标AtomData (OP);
● reader、writer 区分别填写对应的jdbc连接地址、账号、密码
● writer区jdbcUrl配置,只需要改写ip、port、数据库名, serverTimezone可根据实际情况改写,但一定不能少
● 目前版本writeMode 只能是 insert, 其他暂不支持
● read下面的column对应的write下面column字段及其类型,long对应整数型,其他都是string
● “channel”: “4” 数量更改可以增加导入速度,但是若是导入的文件数量小于channel数量,channel的改变没有意义,最好是channel数量和文件数量保持一致
(2)运行方法
#执行同步命令
python2 bin/datax.py job/mysql2atomdata-op.job
(3) 测试结果显示
......省略之前的日志内容
2023-02-01 19:01:44.071 [job-0] INFO JobContainer - PerfTrace not enable!
2023-02-01 19:01:44.072 [job-0] INFO StandAloneJobContainerCommunicator - Total 10240000 records, 1388494416 bytes | Speed 613.55KB/s, 4633 records/s | Error 0 records, 0 bytes | All Task WaitWriterTime 2,140.437s | All Task WaitReaderTime 46.018s | Percentage 100.00%
2023-02-01 19:01:44.075 [job-0] INFO JobContainer -
任务启动时刻 : 2023-02-01 18:24:52
任务结束时刻 : 2023-02-01 19:01:44
任务总计耗时 : 2211s
任务平均流量 : 613.55KB/s
记录写入速度 : 4633rec/s
读出记录总数 : 10240000
读写失败总数 : 0