猪的减速机尺寸优化的最佳方法是什么?

时间:2016-07-22 20:45:09

标签: apache-pig

我是猪的新手,正在制作一个我面临情况的剧本。对于大多数减速机而言,我的工作运行非常有效,但最后几个减速机需要数小时才能完成。我能想到的唯一合理的解释是,很少有减少器具有大量数据,这很可能因为我必须将具有超过1000万行的数据集连接到具有大约500行的数据集作为映射练习

我找到的两种方法是使用并行设置reducer的数量,而另一种方法是使用pig.exec.reducers.bytes.per.reducer

在我的情况下,哪种方法会更好? (可能有大量记录映射到单个密钥)。

另外,对于pig.exec.reducers.bytes.per.reducer,正确的实施方法是什么?

2 个答案:

答案 0 :(得分:0)

这是关于调整map-reduce工作的好文档: - http://blog.cloudera.com/blog/2015/07/how-to-tune-mapreduce-parallelism-in-apache-pig-jobs/

正如您所猜测的那样,似乎是数据偏差问题 - 很少有密钥具有大量记录,而不是其他密钥。

如果您的某个文件很小并且可以轻松放入内存,请尝试使用复制连接。这是映射器端连接,通常它会处理数据偏斜问题

答案 1 :(得分:0)

为了优化连接,您应该使用复制连接作为

<%= form_for(comment, url: photo_comment_cflags_path(@photo, comment)) do |f| %>

并且并行处理您的工作或增加所有步骤的减速器数量,您只需添加一行

 C = JOIN big BY b1, tiny BY t1, mini BY m1 USING 'replicated';

在猪脚本的开头,或者你可以使用

  SET default parallel 100;