我必须每天将大量数据摄入hbase。
平均我将102 *(10 ^ 6)条记录加载到hbase中。
但是,我不能只将这些数据加载到Hbase中,因为我必须将每条记录与1个月的旧数据进行比较并检查重复项。如果有重复,我必须只保留两个值中的一个。
以下是一个例子:
tableTest(pk,value)
record1:(id:1,val:5) record2:(id:1,val:8)
在这种情况下我将保持hbase(id:1,val:max(8,5))
现在,因为我在Spark中处理这些数据,然后通过Phoenix api saveToPhoenix(在幕后引发了大量的upsert)将rdd直接保存到hbase,一个解决方案就是在Spark中加载一个月的数据并在rdd级别执行所有更新,然后保存。
然而,这个解决方案的效率非常低,因为我应该加载大约(102 *(10 ^ 6))* 30个记录,而且还有其他一些我想要解决的问题。
我想知道Phoenix中是否有类似触发器的机制允许我在数据库端处理这种逻辑(在upsert期间保持val1和val2之间的最大值)。
协处理器功能是最接近且唯一的解决方案吗?