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

Я использую Mahout 0.8 на Hadoop 2.2.0.

Есть идеи ?


person IrishDog    schedule 02.03.2014    source источник


Ответы (2)


Предыдущие ответы неверны. Mahout 0.8 имел версию seqdirectory MapReduce, которая была новой функцией. Ошибка в версии MR вызывала исключение, которое вы видите.

Чтобы выполнить seqdirectory с помощью Mahout 0.8, используйте последовательную версию, указав последовательную опцию -xm в вашей командной строке.

mahout seqdirectory -i inputFolder -o outputFolder -xm sequential

По умолчанию seqdirectory выполняет версию MR, если она не указана.

С тех пор эта проблема была исправлена ​​в Mahout 0.9.

person Suneel Marthi    schedule 10.03.2014
comment
Да, вы правы, это, наконец, сработало, но я также получаю исключение OutOfMemory. Исключение в потоке main java.lang.OutOfMemoryError: пространство кучи Java - person IrishDog; 11.03.2014
comment
что ты пытаешься сделать? - person Suneel Marthi; 11.03.2014
comment
Я изучаю поваренную книгу Mahout и пытаюсь сделать несколько упражнений и примеров. Теперь я пытаюсь преобразовать в файлы последовательности некоторые текстовые вводы из lastfm. - person IrishDog; 11.03.2014
comment
Было бы полезно, если бы вы могли опубликовать трассировку стека. - person Suneel Marthi; 11.03.2014
comment
@SuneelMarthi: +1 за решение ошибки. Пробовал целую неделю. - person Meet Mehta; 31.03.2014

Я где-то читал, что mahout 0.8 работает с hadoop 1.2. Я скачал только mahout (использует jar из lib/hadoop )

person webdev    schedule 04.03.2014
comment
Я думаю, вы правы, потому что я попробовал это с hadoop 1.2.1, и это, наконец, сработало. Спасибо за ответ! - person IrishDog; 04.03.2014
comment
Это не имеет ничего общего с версией Hadoop, посмотрите мой ответ, в чем проблема. @webdev было бы полезно, если бы вы могли проверить факты в списках пользователей mahout, прежде чем публиковать здесь. - person Suneel Marthi; 11.03.2014