存储中间结果

时间:2014-05-07 17:04:03

标签: hadoop apache-spark

假设我有一个带有复合键的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,有人可以告诉我一个如何处理它的想法?

1 个答案:

答案 0 :(得分:0)

HBase是一种读/写媒体。您可以为同一个rowkey创建新条目:它们将具有更新的时间戳,因此它们可以有效地"替换旧的。

因此,您可以通过以下方式管理Step1Table,Step2Table和Step3Table:

  • 从hbase读取给定密钥的聚合。
  • 将新值添加到每个聚合:重新计算值
  • 将新值存储回相同的密钥。

本质上,工作不在特殊的输入/输出格式中(除了使用HBase的TableInput / OutputFormat之外),而是在聚合计算中。