2014-05-15 62 views
1

我試圖運行在亞歷克斯·霍姆斯書提供 https://github.com/alexholmes/hadoop-book/blob/master/src/main/java/com/manning/hip/ch4/sort/total/TotalSortMapReduce.javaTotalOrderPartitioner在MapReduce的例子

然而,當我做一個罐子後運行同一程序的樣本,我得到一個異常:

異常在線程 「主要」 java.lang.ArrayIndexOutOfBoundsException:1 在 org.apache.hadoop.mapred.lib.InputSampler.writePartitionFile(InputSampler.java:338) 在 com.manning.hip.ch4.sort。 total.TotalSortMapReduce.runSortJob(TotalSortMapR educe.java:44)在 com.manning.hip.ch4.sort.total.TotalSortMapReduce.main(TotalSortMapReduce.java:12)

是否有人可以幫助我瞭解如何運行的代碼。我提供了以下論點。 args [0] - > name.txt的輸入路徑(需要排序的文件)。它在hadoop。

args [1] - >應該生成的示例分區文件。 hadoop的路徑。

args [2] - >生成排序文件的輸出目錄。

請指導我需要運行此代碼的方式。

回答

2

原因這個問題可能是輸入數據文件非常小,但是在代碼:

InputSampler.Sampler<Text, Text> sampler = 
     new InputSampler.RandomSampler<Text,Text> 
      (0.1, 
      10000, 
      10); 

您設置maxSplitsSampled到在RandomSampler<Text,Text> (double freq, int numSamples, int maxSplitsSampled) 您可以通過一套解決問題參數到,或者只是確保它不大於你輸入文件的分割數。