我有一个 Pig Streaming 作业,其中映射器的数量应该等于输入文件中的行/行数。我知道那个设置
set mapred.min.split.size 16
set mapred.max.split.size 16
set pig.noSplitCombination true
将确保每个块为 16 个字节。但是如何确保每个地图作业都只有一行作为输入?这些行是可变长度的,因此使用一个常数来表示mapred.min.split.size
andmapred.max.split.size
并不是最好的解决方案。
这是我打算使用的代码:
input = load 'hdfs://cluster/tmp/input';
DEFINE CMD `/usr/bin/python script.py`;
OP = stream input through CMD;
dump OP;
解决了!感谢 zsxwing
而且,如果其他人遇到这种奇怪的废话,请知道这一点:
为了确保 Pig 为每个输入文件创建一个映射器,您必须设置
set pig.splitCombination false
而不是
set pig.noSplitCombination true
为什么会这样,我不知道!