存储中间结果

qaxu7uf2  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(227)

假设我有一个带有复合键的hbase表- Key1,Key2,Key3,Time 我想用spark做这样的事情:

Aggregate at -> Key1,Key2,Key3,DatePart(Time),Hour(Time) --->Save result in Another table (Step1Table)

使用以上rdd

Aggregate at -> Key1,Key2,DatePart(Time),Hour(Time) --->Save result in Another table (Step2Table)

使用以上rdd

Aggregate at -> Key1,DatePart(Time),Hour(Time) --->Save result in Another table (Step3Table)

问题是,当我想把结果保存到表中时,我不想做简单的插入,我想做某种合并(如果键的记录存在),有人能指导我吗
我想我需要创建一个重载的tableoutputformat,有人能告诉我怎么处理它吗?

goucqfw6

goucqfw61#

hbase是一种读/写介质。您可以为同一行键创建新条目:它们将具有较新的时间戳,以便“有效地”替换较旧的时间戳。
因此,您的step1table、step2table和step3table可以通过以下方式进行管理:
从hbase读取给定密钥的聚合。
将新值添加到每个聚合:重新计算值
将新值存储回同一个键。
基本上,工作不是以特殊的输入/输出格式(除了使用hbase的tableinput/outputformat之外)进行的,而是在聚合计算中进行的。

相关问题