2015-07-20 133 views
1

我在Hadoop中遇到了一個相當奇怪的問題。Hadoop作業剛剛結束

我寫了一個MR作業,就像那樣結束,而不執行映射或減少代碼。它生成輸出文件夾,但該文件夾是空的。我沒有看到這種行爲的理由。

我甚至試着用默認的Mapper和Reducer來找到問題,但我沒有例外,沒有錯誤,工作剛剛結束併產生一個空文件夾。這裏是最簡單的驅動程序:

Configuration conf = new Configuration(); 

    //DistributedCache.addCacheFile(new URI(firstPivotsInput), conf); 

    Job pivotSelection = new Job(conf); 
    pivotSelection.setJarByClass(Driver.class); 
    pivotSelection.setJobName("Silhoutte"); 

    pivotSelection.setMapperClass(Mapper.class); 
    pivotSelection.setReducerClass(Reducer.class); 

    pivotSelection.setMapOutputKeyClass(IntWritable.class); 
    pivotSelection.setMapOutputValueClass(Text.class); 

    pivotSelection.setOutputKeyClass(IntWritable.class); 
    pivotSelection.setOutputValueClass(Text.class); 

    FileInputFormat.addInputPath(pivotSelection, new Path("/home/pera/WORK/DECOMPRESSION_RESULT.csv")); 
    FileOutputFormat.setOutputPath(pivotSelection, new Path("/home/pera/WORK/output")); 

    pivotSelection.setNumReduceTasks(1); 

    pivotSelection.waitForCompletion(true); 

在這樣一個簡單的例子中會出現什麼問題?

回答

0

最簡單的解釋是輸入路徑("/home/pera/WORK/DECOMPRESSION_RESULT.csv")在HDFS上不包含任何東西。您可以通過MAP_INPUT_RECORDS計數器的值來驗證。您還可以使用hadoop dfs -ls /home/pera/WORK檢查HDFS上此文件的大小,或者您甚至可以通過hadoop dfs -cat /home/pera/WORK/DECOMPRESSION_RESULT.csv | head查看此文件的前幾行。 (或者-text而不是-cat如果它被壓縮)。

另一個問題可能是reducer有一個特殊的(if)條件,對於每個映射器的輸出都會失敗,但這不適用於身份映射器和reducer,所以我相信這種情況是前者。

+0

謝謝你的回答,但它確實有條目,它在本地文件系統上,我正在通過IDE以獨立模式運行它?另外,當我嘗試自定義映射器並在設置方法中設置斷點時也會發生同樣的情況。像我沒有設置映射器。 – Marko

+0

@pera但它仍然應該在HDFS上。嘗試把它放在那裏,看看它是否運行 – vefthym