2015-11-02 68 views
0

我是猪新手,根据我的理解,SET default_parallel 1声明应该生成一个输出文件,因为它将使用一个缩减器。但是当我在下面的脚本上使用这个命令时,它给了我2个/ p文件。SET default_parallel 1;声明不适用于猪

SET default_parallel 1; 
A = LOAD 'hdfs:/pigfldr/union1' using PigStorage(' ') AS (sln:int); 
B = LOAD 'hdfs:/pigfldr/union2' using PigStorage(' ') AS (sln:int); 
C = UNION A, B; 

STORE C INTO 'hdfs:/pigfldr/unionfres'; 
+0

它也取决于你的hdfs集团的大小(其他参数),但为什么你想要有正好1个输出文件?如果没有出错,我想你仍然会有“_succes”文件。 – AntonyBrd

+0

我想合并这两个文件。我希望首先将文件A的记录放在一个文件中,然后再放入B. – Saswat

+0

MapReduce过程给出多个输出文件是很常见的。如果你想在你的本地文件系统中使用这些结果到一个文件中,请使用hadoop fs -get merge https://hadoop.apache.org/docs/r2.6.0/hadoop-project-dist/hadoop-common/FileSystemShell.html #getmerge,如果你想留在HDFS中使用output/path/*。 – AntonyBrd

回答

2

即使我对新来的猪。但根据我的知识“SET default_parallel 1;”(并行功能)仅适用于reducer,不适用于mapper。 所以只有你得到两个文件。 因为在你的情况下联盟功能只使用mapper而不是reducer。 您可以看到名为part-m-00000和part-m-00001的输出文件,即m表示映射器输出文件。它不是reducer输出文件,如果它还原输出文件意味着它将像部分-r-0000 *

+0

你是正确的,但我想输出结合到一个文件。 – Saswat