0

我们遇到了 Pig 的多查询优化器无法按预期工作的问题。

据我了解,下面的脚本应该作为一个 MR 作业运行,但它在我们的集群上作为两个作业运行。我认为默认情况下应该启用多查询优化,我在这里遗漏了什么吗?如果我用“过滤器”语句替换组,那么它可以作为一个单一的 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。

4

3 回答 3

0

在 Pig 中,每个 GROUP BY 都需要 MR shuffle。MR 根据密钥对数据进行混洗。单个 MR 作业不能以两种方式(基于两个不同的键)对数据进行混洗。该脚本正在执行两个 GROUP BY 操作,因此将产生两个 MR 作业。所以 Pig 将无法进行多查询优化

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

于 2015-03-31T19:45:22.780 回答
0

If 0.1.0 is the real version of your pig installation - it's very OLD. The latest version is 0.11.1.

Page about performance from 0.11.1 docs: http://pig.apache.org/docs/r0.11.1/perf.html

于 2013-08-23T18:49:14.660 回答
0

我不认为多查询优化在这里需要努力,多查询优化通常用于拆分。在您的示例中,有 2 个分组依据,必须引起 2 种随机播放。

于 2015-01-19T08:59:08.637 回答