pig流媒体:缺少一些输出文件

6tr1vspr  于 2021-06-04  发布在  Hadoop
关注(0)|答案(0)|浏览(210)

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

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个Map器按预期运行。但是,我希望在不同的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的信息。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题