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