首页 > 技术文章 > spark bulkload 报错异常:Caused by: java.io.IOException: Added a key not lexically larger than previous

hejunhong 2020-10-29 17:53 原文

------------恢复内容开始------------

Caused by: java.io.IOException: Added a key not lexically larger than previous. Current cell = 2c90807b73996dff0173b758788600a5,104/CF:dimension_type/1603964542276/Put/vlen=8/seqid=0, lastCell = 2c90807b73996dff0173b758788600a5,104/CF:id_list/1603964542276/Put/vlen=36/seqid=0
at org.apache.hadoop.hbase.io.hfile.HFileWriterImpl.checkKey(HFileWriterImpl.java:245)

 

 1.主要原因:

spark写hfile时候是按照rowkey+列族+列名进行排序的,因此在写入数据的时候,要做到整体有序

,如果某个rowkey相同的两列,前一个列名为id_lis,下一个列名为dimension_type,发现按照字典顺序d是i之前的,但是插入是i是后面来的,所以没有顺序

解决方法:

读取hive表时,使用shcme信息获取列名与对应的值作为map集合,对map的 key也就是列名进行排序,解决列名顺序问题

在结合rowkey进行整体排序即可

 

推荐阅读