我应该如何处理mapred作业中的中间数据?

时间:2012-10-19 12:53:07

标签: hadoop hbase

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

我的问题是:如何在不同的过滤器,映射和聚合之间处理中间数据。我应该将数据保存在文件系统中吗?这看起来有点浪费。我应该尝试撰写功能并一次性完成所有工作吗?

我意识到这取决于我想要实现什么以及我的查询语言会是什么样子。但这个一般性问题通常是如何处理的?您有任何提示或见解可供分享吗?是否有任何好的文章/资源可以解决这个问题?

2 个答案:

答案 0 :(得分:1)

了解Cascading

当我想连接几个地图缩减工作时,我发现它非常有用。

您可以创建级联Hbase tap,然后将其插入管道,并使用Cascading API

应用函数,聚合器,分组等

答案 1 :(得分:1)

PigHive两者都做得很好(并且可以在HBase上运行)。他们的工作方式是双重的。首先,他们尽可能地融入每个MR阶段。但是,这有时根本不可能。例如,一个组,然后是变换,然后另一个组不可能一次完成。对于中间数据,他们只写出HDFS。这是最简单的方法,无论如何你都必须写入磁盘来获取任何合理数量的数据。他们只是在完成后删除中间数据。

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