Попытка загрузить индексированный файл LZO с помощью LzoPigStorage и слоновой птицы

У меня есть файл журнала со сжатием LZO по умолчанию и файл .index, сгенерированный с помощью Hadoop-LZO, но когда я запускаю простой файл Pig для извлечения 100 лучших записей с помощью LzoPigStorage, я получаю следующее исключение:

Message: Unexpected System Error Occured: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
    at org.apache.pig.backend.hadoop23.PigJobControl.submit(PigJobControl.java:130)
    at org.apache.pig.backend.hadoop23.PigJobControl.run(PigJobControl.java:191)
    at java.lang.Thread.run(Thread.java:724)
    at org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher$1.run(MapReduceLauncher.java:257)
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.pig.backend.hadoop23.PigJobControl.submit(PigJobControl.java:128)
    ... 3 more
Caused by: java.lang.IncompatibleClassChangeError: Found interface org.apache.hadoop.mapreduce.JobContext, but class was expected
    at com.twitter.elephantbird.mapreduce.input.LzoInputFormat.listStatus(LzoInputFormat.java:55)
    at org.apache.hadoop.mapreduce.lib.input.FileInputFormat.getSplits(FileInputFormat.java:269)
    at com.twitter.elephantbird.mapreduce.input.LzoInputFormat.getSplits(LzoInputFormat.java:111)
    at org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigInputFormat.getSplits(PigInputFormat.java:274)
    at org.apache.hadoop.mapreduce.JobSubmitter.writeNewSplits(JobSubmitter.java:452)
    at org.apache.hadoop.mapreduce.JobSubmitter.writeSplits(JobSubmitter.java:469)
    at org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:366)
    at org.apache.hadoop.mapreduce.Job$11.run(Job.java:1269)
    at org.apache.hadoop.mapreduce.Job$11.run(Job.java:1266)
    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:1408)
    at org.apache.hadoop.mapreduce.Job.submit(Job.java:1266)
    at org.apache.hadoop.mapreduce.lib.jobcontrol.ControlledJob.submit(ControlledJob.java:336)

Я использую Hadoop 2.0, Pig 0.11 и слон-птицу 2.2.3.


person Carl Sagan    schedule 31.07.2013    source источник


Ответы (1)


Я не использую слон-птицу, поэтому не совсем уверен, что проблема именно в этом.

Но глядя на их сборку для версии 2.2.3, был скомпилирован против hadoop-0.20.2 и pig-0.9.2. Я видел проблемы с UDF в Pig при работе с более новой версией, чем та, с которой была скомпилирована UDF.

Вы можете обновить слон-птицу до более новой версии или перекомпилировать с правильными библиотеками?

person Pradeep Gollakota    schedule 01.08.2013
comment
Что я сделал, так это взял собранный слон-птицу-2.2.3.jar и скопировал его в свою тестовую папку. Как проверить, для какой версии Hadoop и Pig он был создан? Он был построен на той же машине, которая пытается его использовать. - person Carl Sagan; 08.08.2013
comment
Это, вероятно, очень устарело сейчас... но кажется, что вы просто используете очень старую версию слоновой птицы... Я бы предложил перейти на более новую. - person Pradeep Gollakota; 14.10.2013