2014-03-02 71 views
0

我試圖將一些文本文件轉換爲mahout序列文件。所以我做Mahout:無法轉換爲序列文件

mahout seqdirectory -i inputFolder -o outputFolder 

但我總是得到這個異常

java.lang.Exception: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException 
    at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:403) 
Caused by: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException 
    at org.apache.hadoop.mapreduce.lib.input.CombineFileRecordReader.initNextRecordReader(CombineFileRecordReader.java:164) 
    at org.apache.hadoop.mapreduce.lib.input.CombineFileRecordReader.<init>(CombineFileRecordReader.java:126) 
    at org.apache.mahout.text.MultipleTextFileInputFormat.createRecordReader(MultipleTextFileInputFormat.java:43) 
    at org.apache.hadoop.mapred.MapTask$NewTrackingRecordReader.<init>(MapTask.java:491) 
    at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:734) 
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:339) 
    at org.apache.hadoop.mapred.LocalJobRunner$Job$MapTaskRunnable.run(LocalJobRunner.java:235) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:262) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:744) 
Caused by: java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526) 
    at org.apache.hadoop.mapreduce.lib.input.CombineFileRecordReader.initNextRecordReader(CombineFileRecordReader.java:155) 
    ... 11 more 
Caused by: java.lang.IncompatibleClassChangeError: Found interface org.apache.hadoop.mapreduce.TaskAttemptContext, but class was expected 
    at org.apache.mahout.text.WholeFileRecordReader.<init>(WholeFileRecordReader.java:52) 
    ... 16 more 

我在Hadoop 2.2.0

任何想法運行亨利馬烏0.8?

回答

2

以前的答案是不正確的。 Mahout 0.8有一個MapReduce版本的seq目錄,這是一個新功能。 MR版中的一個錯誤導致了你所看到的異常。

要使用Mahout 0.8執行seqdirectory,請使用順序版本,方法是在命令行中指定-xm順序選項。

mahout seqdirectory -i inputFolder -o outputFolder -xm sequential 

默認情況下,如果沒有指定,seqdirectory會執行MR版本。

此問題已經在Mahout 0.9中修復。

+0

是的,你是對的,它終於工作,但我也得到一個OutOfMemory異常。 「線程中的異常」主「java.lang.OutOfMemoryError:Java堆空間」 – IrishDog

+0

你試圖做什麼? –

+0

我正在學習Mahout Cookbook,我正在嘗試做一些例子和例子。現在,我試圖將序列文件轉換爲來自lastfm的一些文本輸入 – IrishDog

1

當我讀到mahout 0.8與hadoop 1.2一起工作的地方時。我只下載了mahout(它使用lib/hadoop的hadoop jar)

+0

我認爲你是對的,因爲我試着用hadoop 1.2.1和它最終工作..謝謝你的迴應! – IrishDog

+0

這與Hadoop版本沒有任何關係,請看我的問題是什麼。 @webdev它會幫助,如果你可以在發佈之前檢查mahout用戶列表上的事實。 –

相關問題