猪多查询优化问题

时间:2013-08-23 18:32:08

标签: hadoop apache-pig

我们遇到的问题是Pig的Multiquery Optimizer无法按预期工作。

据我所知,下面的脚本应作为一个MR作业运行,但它在我们的集群上作为两个作业运行。我认为Multiquery Optimization默认情况下应该打开,我在这里遗漏了什么吗?如果我用“过滤器”语句替换组,那么它就可以作为一个单独的MR作业。

data = LOAD 'input' AS (a:chararray, b:int, c:int);
A = GROUP data BY b;
B = GROUP data BY c;
STORE A INTO 'output1';
STORE B INTO 'output2';

我正在使用CDH打包猪0.1.0和Hadoop 2.0.0。

3 个答案:

答案 0 :(得分:0)

如果0.1.0是您的猪装置的真实版本 - 它是非常老的。最新版本为0.11.1。

有关0.11.1文档中的效果的页面: http://pig.apache.org/docs/r0.11.1/perf.html

答案 1 :(得分:0)

我不认为Multiquery Optimization会在这里付出努力,多种查询通常用于拆分。在你的例子中,有2组,必须造成2种洗牌。

答案 2 :(得分:0)

在Pig中,每个GROUP BY都需要MR shuffle。并且MR基于密钥对数据进行洗牌。单个MR作业无法以两种方式对数据进行混洗(基于两个不同的键)。该脚本正在执行两个GROUP BY操作,因此将导致两个MR作业。所以猪将无法做multi-query optimization

但是,当您使用FILTER替换GROUP BY时,Pig将隐式使用SPLIT替换FILTER以执行多查询优化,这将导致单个MR作业。