2014-05-15 3 views
1

Je suis en train d'exécuter l'échantillon fourni dans le livre alex holmes https://github.com/alexholmes/hadoop-book/blob/master/src/main/java/com/manning/hip/ch4/sort/total/TotalSortMapReduce.javaTotalOrderPartitioner dans MapReduce exemple

Cependant quand je lance le même programme après avoir fait un pot, je me fais une exception:

Exception in thread "main" 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)

Quelqu'un peut-il aider à me s'il vous plaît comprendre comment exécuter le code. J'ai fourni les arguments suivants. args [0] -> le chemin d'accès à names.txt (fichier qui doit être trié). C'est en hadoop.

args [1] -> l'exemple de fichier de partition qui doit être généré. Chemin de hadoop. Args [2] -> le répertoire de sortie où le fichier trié doit être généré.

Veuillez me guider comme je dois exécuter ce code.

Répondre

2

La raison de ce problème est probablement le fichier de données d'entrée est très faible, mais dans le code:

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

vous définissez les maxSplitsSampled- dans RandomSampler<Text,Text> (double freq, int numSamples, int maxSplitsSampled) Vous pouvez résoudre le problème en jeu que paramètre à , ou assurez-vous simplement qu'il n'est pas plus grand que le nombre de divisions de votre fichier d'entrée.