datax
文章平均质量分 78
cclovezbf
这个作者很懒,什么都没留下…
展开
-
datax之oraclereader读取时间类型字段问题学习
众所周知 hive是字段类型不敏感的,比如date 2022-01-01 和string 2022-01-01 在大多数情况下都是可以呼唤的。而且经过我的测试 oracle的date 和timestamp类型 对应的都是 93也就是timestamp,所以datax在对oracle取数的时候,这两个类型是区分不了的。所以我们一般来说看到这个date 数值就是年月日,但是因为工具看到的也不同 我用dbeaver看到的如上,同事用的哪个工具忘了如下。如果你想看到年月日时分秒,那么datax就是这么做的。原创 2023-03-20 15:42:47 · 1521 阅读 · 0 评论 -
datax导入到hive的数据量翻倍
append,写入前不做任何处理,data-ingestion hdfswriter直接使用filename写入,并保证文件名不冲突。按道理来说第二次应该把第一次的数据文件删除,可是别人也没跑完,而且还不在同一个目录。因为hive的数据底层就是文件,有文件就有数据,这中间并没有像mysql这种插入一条数据这种事务关系。就是在这里rename之前 判断目录下是否有文件,有文件就删除!2.在我rename之前我发现突然又有文件了,那我就把自己删了。1.删文件,结果前面的都删完了,那我就不删了呗。原创 2023-03-02 19:08:20 · 1083 阅读 · 0 评论 -
datax之channel学习
可以看到 reader是一条条发的,但是中间搞了一个buffer,buffer里只能装32条数据或者64M的而数据,到了这个界限,就会flush到channel里去,reader读数据(可能一条条读可能一批批读)读到的数据一条条的写到buffer里,当buffer=32的时候,再放到channel里去。reader比writer快,这个时候我们可以加大channel的size,保存更多数据,但感觉用处也不大。//buffer没数据,我就从channel里获取32个数据到buffer,然后一个个消费。原创 2022-12-14 15:57:10 · 1940 阅读 · 0 评论 -
datax-hdfsReader空目录报错
今天同事遇到了一个问题。 就是hdfsreader->mysqlwriter这种的时候。有的分区没有数据会报错。com.tencent.s2.dataingestion.common.exception.DataXException: Code:[HdfsReader-08], Description:[您尝试读取的文件目录为空.]. - 未能找到待读取的文件,请确认您的配置项path: /user/hive/warehouse/dwdmdata.db/dm_tax_f_income_acc原创 2022-11-30 20:22:07 · 1965 阅读 · 2 评论 -
hdfswriter优化之提高写速度
比如mysql读的速度是2w Records/s, hdfs写的速度是1w Records/s 那么不管你怎么切分任务,写的速度永远是导数的瓶颈?举例 1e的数据,mysql分成10channel,51个tasks,那么在hdfswriter上会同时有10个线程去写orc文件,关键问题在于。注意这个方法当write为null的时候,会new一个writer。之前的文章介绍过优化读的速度。而datax的代码里是来一条写一条,这两种效率谁高谁低就不用说了吧。目前我们能控制的无非就是并行写,不能根本的解决问题。原创 2022-09-19 17:09:58 · 1117 阅读 · 0 评论 -
datax自定义reader->kuduReader
kudureader原创 2022-05-26 14:46:18 · 1270 阅读 · 0 评论 -
datax之job task channel taskgroup 详解
JobContainer 是什么?jobContainer 是许多job的组合体,比如我有个任务是同时读取mysql和oracle的表然后写导hdfs的。此时mysqlreader+oraclereader打包起来就是一个container。但是实际来说我们都是只有一种reader的。job是什么?简单的理解就是我要 mysql->hdfs这这任务就是一个jobtask是什么?task是job的更细层次划分,比如mysql id 1->100w 共计100w条数据我把 m原创 2022-05-11 15:47:29 · 3176 阅读 · 0 评论 -
datax之源码优化
CommonRdbmsWriter 类里 fillPreparedStatementColumnType方法里 String str = column.asString(); if (DataBaseType.PostgreSQL.compareTo(dataBaseType)==0&&StringUtils.isNotEmpty(str)&&str.indexOf('\u0000')>-1){ ..原创 2022-04-29 14:52:31 · 1201 阅读 · 0 评论 -
datax之hdfsReader提速
好久没写datax的东西了。。紧接着之前的说到hdfsReader他的切片数是根据他的文件数来的。比如 我一个table下有 10个文件, 就是分成10个tasks所以有时候读hdfs hive的时候就会发现导数速度怎么也上不去。。。那么我们就要考虑怎么增加文件数量了?这时候又有小伙伴要说了增加hive的reduce个数, 减少每个reduce的数量,distribute by这些都没错,但是都错了。你hive 的引擎是啥 mr spark, tez?你是否有合并原创 2022-04-29 12:14:19 · 2141 阅读 · 0 评论 -
datax报错:java.sql.SQLException: ORA-01445: 无法从不带保留关键字的表的联接视图中选择 ROWID 或采样
2-23 、2-24都是ok的 2-25就挂了。我也没更新json文件。想也不用想肯定是上游数据源发生变化,字段名修改,字段数增加(如果你是*会有影响) ,字段列减少看原因 取样的时候错了执行的SQL为: SELECT * FROM ( SELECT PK_ID FROM ims5_receipt_v_06 SAMPLE (0.1) WHERE (PK_ID IS NOT NULL) ORDER BY DBMS_RANDOM.VALUE) WHERE ROWNUM <= 5...原创 2022-02-25 11:08:43 · 1083 阅读 · 0 评论 -
datax数据同步oracle到kudu
datax新增了kuduwriter但是很操蛋的是没有示例。但是代码都写好了。我们直接根据源码取写json就行。{ "job": { "setting": { "speed": { "channel": 10 } }, "content": [ { "reader": { "name": "oraclereader", "parameter": {原创 2022-01-04 18:01:04 · 1315 阅读 · 0 评论 -
datax导数优化之splitPk优化
既上篇说过通过splitPk的方式将一个sql查询分成多个,进行并行查询可以大幅度的提高导数速度。例如一张表id name scoreid单调递增, name是 aaa->zzz score是1->100 这种事完美数据,无论取哪个都会拆分的很均匀但是生活中的数据千奇百怪。。。。有时候会发现splitPk速度确实有提升,但是还是很慢?那怎么办呢?例如height name score 数据1000wheight=168-172 这个区间占了900w其余的分布在..原创 2021-07-05 11:44:03 · 6816 阅读 · 0 评论 -
datax->hdfs到postgresql导数慢解决方式
接着上篇文章说的事情。所有bug解决完了,终于可以开始导数了,导数也很顺利,但是发现了一件不太舒服的事,速度怎么这么慢!!!之前的速度一般为2w-3w/s,1000w的数据需要300s-500s,差不多5-10分钟,是可以接受的但是现在不到7000/s,不能接受,还是需要优化。之前写过一篇很简单的优化oraclereader。提高channel的数量,多个任务去读取,但是看了hdfsreader的split的方法,这个切分就是根据文件个数切分的。又要提到上次的任务了。vendor原创 2021-05-21 18:31:43 · 2334 阅读 · 0 评论 -
datax导数->hdfsReader到postgresql数据丢失?
解决了上篇文章的tpg的特殊字符invalidbytesequenceforencoding"UTF8": 0x00 问题。原以为可以开开心心等结果就好。最后发现导的8个表中有4个表数量对不上????简直不敢想象,仔细看了下dolphin上的日志,一切正常。背景说下sms_vendor_contact_t:oracle:8198715 hive:8198715 tpg:4195000 少数据sms_vendor_site_t: oracle:9578067 ......原创 2021-05-20 10:34:46 · 1613 阅读 · 0 评论 -
datax导数hdfs->postgresql 报错。
个人使用的是datax+dolphin来执行调度任务的。平常分分钟就解决问题了。今天不知道扎回事,总感觉不对劲。背景:从hive的odsmdmdata.sms_vendor_site_t 导数据到postgresql的ia_fdw_profile.it_sms_vendor_site_t备注 hive的odsmdmdata.sms_vendor_site_t 数据来自oracle。。结果发现报错,很正常,直接看日志刷到最下面刷新两下。发现还是没看到报错。等了会发现卡在这。。。点击原创 2021-05-19 17:16:04 · 799 阅读 · 0 评论 -
datax优化之reader提速-详细经历
首先说明下,个人认为reader提速最重要的一点就是切分任务即split这块背景:一直用datax从oracle到hive数据,一般是1w-2w条/s也凑合用了,但是最近导DM_F_REV_FULL_LIFE_CYCLE_IMS表 该表根据月在hive分区,每个分区数据在200w-1000w左右,数据量也不算特别大但是速度只有4M/s 速度不到7000条/s,{ "job":{ "setting":{ "speed":{ "c原创 2020-12-09 17:36:41 · 21820 阅读 · 22 评论