يعرض seqdirectory خطأ في وضع MapReduce عند استخدام Mahout 1.0-SNAPSHOT مع Hadoop 2.2.0
-
21-12-2019 - |
سؤال
أحاول تشغيل الأمر seqdirectory في Mahout 1.0-SNAPSHOT مع Hadoop 2.2.0.عند استخدام الأمر:
seqdirectory -i input -o output
تتبع المكدس:
Error: 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.YarnChild$2.run(YarnChild.java:162)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1491)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:157)
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)
... 10 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:59)
... 15 more
اعتقدت أن هذه مشكلة في Mahout 0.9 وتم إصلاحها في صندوق السيارة.أي أدلة كيفية التعامل مع هذا؟أرغب في تشغيله في وضع MapReduce، لذا فإن -xm التسلسلي ليس هو الحل الذي أبحث عنه.
المحلول
Caused by: java.lang.IncompatibleClassChangeError: Found interface org.apache.hadoop.mapreduce.TaskAttemptContext, but class was expected
تعني أخطاء مثل هذه دائمًا أنك تقوم بتشغيل شيء ما مقابل إصدار لشيء مختلف عن الإصدار الذي تم تجميعه ضده.هنا، لم تقم بتجميع Mahout لـ Hadoop 2.لا يعمل بطبيعته مع Hadoop 2 دون بعض تغييرات البناء.
لا تنتمي إلى StackOverflow