一、背景
今天下午2点多告警收到一个处理作业报错,处理的逻辑分两个步骤。第一步:抽取hbase的增量数据到数据仓库的临时表中;第二步:临时表A对主表B做merge操作。报错的是第二步,错误信息是unable to get a stable set of rows in the source tables。熟悉merge into的应该都清楚,这个是using后面表出现重复值。于是就对A表做count分组操作,结果发现确实是临时表的ID出现重复,但是ID是hbase表中的Rowkey值,肯定是不可能是重复的。相同操作类似的作业有很多个,其他表都没有出现问题,就唯独这一个作业出现问题,那么基本可以断定就是hbase的这个表出现了异常。
二、诊断问题
1)、拿临时表里一个重复的ID,到hbase查看返回的记录条数,返回的记录数是一条
get 'TEST_A','1346560756','INFO:create_time'
2)、 选取毫秒差异时间范围,scan出来的是1条,但是count出来的却是很多,本地测试理论上scan和count的条数是一致的,那么基本可以确认是这个表出现了问题,可能是出现表存在状态不一致情况
scan 'TEST_A' ,{TIMERANGE=>[1571808777340,1571808777342]}