Apache Phoenix中的类似触发器的机制 - Hbase

时间:2016-09-27 08:12:20

标签: apache-spark hbase phoenix

我必须每天将大量数据摄入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之间的最大值)。

协处理器功能是最接近且唯一的解决方案吗?

0 个答案:

没有答案