datax导数->从一个集群到另外一个集群(hdfs)出现数据缺失
今天通过datax从一个集群同步数据到另外一个集群当中,虽然任务执行成功了,但是一个很大的问题,
(数据丢失)这怎么得了
解决思路:
(1)是不是数据分隔符的问题,导致数据变少了。对了一下发现没问题
(2) 是不是因为字段长度不够数据没同步过来,把长度调的足够大,发现也不管用
(3) 突然在网上发现了一个致命的问题,我们这个表的数据很多,是不是因为数据块太大了导致,一看果然
果然数据块超过了,256M的,所有有部分数据丢失,至于为什么只读了一部分还要从datax的源码开始看。
下面这个链接就是具体的原因说的很详细:
https://blog.csdn.net/cclovezbf/article/details/117064747?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~aggregatepage~first_rank_ecpm_v1~rank_v31_ecpm-2-117064747.pc_agg_new_rank&utm_term=datax%E6%95%B0%E6%8D%AE%E5%90%8C%E6%AD%A5%E8%BF%87%E7%A8%8B%E4%B8%AD%E5%AD%98%E5%9C%A8%E4%B8%A2%E5%A4%B1&spm=1000.2123.3001.4430
其实也就是datax在读取数据的时候,他只读了第一个切片当中的数据,其他的数据都丢了。不要了。
解决方案:对表进行重写,集群设置global参数为256M问题解决。