Hadoop 清管器流:\某些\输出文件丢失

Hadoop 清管器流:\某些\输出文件丢失,hadoop,streaming,output,apache-pig,hdfs,Hadoop,Streaming,Output,Apache Pig,Hdfs,可以通过简单的测试重现该问题。 “猪”的脚本如下: SET pig.noSplitCombination true; dataIn = LOAD 'input/Test'; DEFINE macro `TestScript` input('DummyInput.txt') output('A.csv', 'B.csv', 'C.csv', 'D.csv', 'E.csv') ship('TestScript'); dataOut = STREAM dataIn through macro; ST

可以通过简单的测试重现该问题。
“猪”的脚本如下:

SET pig.noSplitCombination true;
dataIn = LOAD 'input/Test';
DEFINE macro `TestScript` input('DummyInput.txt') output('A.csv', 'B.csv', 'C.csv', 'D.csv', 'E.csv') ship('TestScript');
dataOut = STREAM dataIn through macro;
STORE dataOut INTO 'output/Test';
实际脚本是一个复杂的R程序,但这里有一个简单的“TestScript”,它再现了问题,不需要R:

# Ignore the input coming from the 'DummyInput.txt' file
# For now just create some output data files

echo "File A" > A.csv
echo "File B" > B.csv
echo "File C" > C.csv
echo "File D" > D.csv
echo "File E" > E.csv
输入“DummyInput.txt”目前是一些虚拟数据

Record1
Record2
Record3
对于测试,我使用以下脚本在HDFS中加载虚拟数据。这将产生200个输入文件

for i in {0..199}
do
    hadoop fs -put DummyInput.txt input/Test/Input$i.txt
done
当我运行pig作业时,它运行时没有错误。200个映射程序按预期运行。但是,我希望在各种HDFS目录中看到200个文件。相反,我发现缺少一些输出文件:

       1          200               1400 output/Test/B.csv
       1          200               1400 output/Test/C.csv
       1          189               1295 output/Test/D.csv
       1          159               1078 output/Test/E.csv
根“output/Test”有200个文件,这是正确的。文件夹“B.csv”和“C.csv”也有200个文件。但是,文件夹“D.csv”和“E.csv”缺少文件


我们已经查看了日志,但无法找到任何指向本地输出文件未从数据节点复制到HDFS的原因。

输出文件中的行数是否确实较少,或者只是较少的文件(例如,因为某些文件已被优化)。