1

我正在考虑为 HBase 编写查询语言。使用这种查询语言,用户将能够应用过滤器、跨行映射函数以及聚合/减少数据。(而且,它是一种特定于领域的查询语言。)想象一下数据集非常大,如果使用 HBase,情况通常如此。

我的问题是:我应该如何处理不同过滤、映射和聚合之间的中间数据。我应该将数据保存在文件系统上吗?这似乎有点浪费。我应该尝试编写函数并一口气完成所有事情吗?

我意识到这在一定程度上取决于我想要实现的目标以及我的查询语言会是什么样子。但是这个普遍的问题通常是如何处理的呢?您有什么建议或见解要分享吗?有没有很好的文章/资源可以解决这个问题?

4

2 回答 2

1

看看级联

当我想连接几个 map reduce 作业时,我发现它非常有用。

您可以创建 Cascading Hbase tap然后将其插入管道并使用Cascading API应用函数、聚合器、分组等

于 2012-10-19T14:07:01.497 回答
1

PigHive都可以做到这一点(并且可以在 HBase 上工作)。他们的工作方式是双重的。首先,他们尝试尽可能多地适应每个 MR 阶段。然而,这有时根本不可能。例如,一个组,然后是一个变换,然后是另一个组,一次是不可能的。对于中间数据,它们只是写出到 HDFS。这是最简单的方法,对于任何合理数量的数据,无论如何您都必须写入磁盘。他们只是在完成后删除中间数据。

另外,您确定要重新发明轮子吗?你几乎刚刚描述了猪。将您的语言“编译”为 Pig Latin 甚至可能是值得的。

于 2012-10-19T23:57:54.313 回答