datax同步TPCH数据到Doris

此处介绍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安装

  1. 将datax.zip 上传到工作机器,(注意:这个附件为删减版,只包含了mysql、txt相关同步插件)(也可以从其他机器同步过来)
  2. 执行 解压
unzip datax.zip

4、datax 同步

  1. 进入datax目录
    cd datax
  2. 新建同步job文件,后缀为job或者json均可
sudo vi job/mysql2atomdata-op.job
或vi job/mysql2atomdata-op.json
  1. 填写下列内容,并注意修改配置
    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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
根据您提供的引用内容,datax同步数据可能会导致降速的问题。引用中提到,当存在大量脏数据时,datax会停止执行。而引用指出,脏数据问题是在写入数据库时发现的,因此直接丢弃这些脏数据可能并不能解决降速问题。 可能的原因是,回滚操作会对速度产生影响,因为数据库的回滚可能会导致datax需要更多的内存空间来执行,而内存空间不足会进一步降低datax的抽取速度。此外,垃圾回收(GC)的过程也可能对datax的速度造成影响。 为解决这个问题,可以考虑以下几个方法: 1. 优化数据清洗过程:通过增加数据清洗的规则和条件,尽可能地排除掉脏数据,以减少脏数据同步速度的影响。 2. 增加内存空间:如果内存空间不足导致了速度下降,可以考虑增加datax所在机器的内存,以提供更多的空间供datax执行。 3. 分批同步数据:将数据同步任务拆分为多个批次进行,每个批次同步一部分数据。这样可以减少每次同步数据量,降低内存使用,从而提高同步速度。 4. 调整数据库配置:根据实际情况,调整数据库的配置参数,如缓冲区大小、并发连接数等,以提升数据写入性能。 综上所述,datax同步数据可能会导致降速的问题,可以通过优化数据清洗、增加内存空间、分批同步数据和调整数据库配置等方法来解决这个问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [datax因为脏数据降速问题解决](https://blog.csdn.net/weixin_40366684/article/details/110391762)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [用dataX向PolarDB中导数据时,出现脏数据问题怎么解决](https://blog.csdn.net/weixin_46609492/article/details/124615314)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值