2015-11-02 47 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