Когда я пытаюсь запустить команды pig
в grunt shell, это работает.Однако, когда я пытаюсь запустить его с PigRunner
внутри Java-программы в локальном режиме, он дает найденный интерфейс, но ожидаемая ошибка класса.
Я использую hadoop2.5.0cdh5.3.2
и pig0.12.0
.
Я включил код для java
файла
public class local
{
public static void main(String arg[])
{
try {test();}
catch (IOException e)
{e.printStackTrace();}
}
public static void test() throws IOException
{
File f1 = new File("myscript.pig");
f1.deleteOnExit();
FileWriter fw1 = new FileWriter(f1);
fw1.append("A = load '/home/ritika/NLP/Libraries/dict.txt' as words:chararray;");
fw1.append("dump A;");
fw1.close();
String[] args = { "-x", "local", "myscript.pig" };
PigStats stats = PigRunner.run(args, null);
}
}
Это ошибка:
2018-12-06 14:54: 30,819 [JobControl] ОШИБКА org.apache.hadoop.mapreduce.lib.jobcontrol.JobControl - Ошибка при попытке запуска заданий.java.lang.IncompatibleClassChangeError: Найден интерфейс org.apache.hadoop.mapreduce.JobContext, но ожидается, что класс находится в org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigOutputFormat.setupUdfEnvAg.jpgapache.pig.backend.hadoop.executionengine.mapReduceLayer.JobSubmitter.submitJobInternal (JobSubmitter.java:430) в org.apache.hadoop.mapreduce.Job $ 10.run (Job.java:1295) в org.apache.hadoop.mapreduce.Job $ 10.run (Job.java:1292)в java.security.AccessController.doPrivileged (собственный метод) в javax.security.auth.Subject.doAs (Subject.java:422) в org.apache.hadoop.security.UserGroupInformation.doAs (UserGroupInformation.java:1642) в org.apache.hadoop.mapreduce.Job.submit (Job.java:1292) в org.apache.hadoop.mapreduce.lib.jobcontrol.ControlledJob.submit (ControlledJob.java:335) вorg.apache.hadoop.mapreduce.lib.jobcontrol.JobControl.run (JobControl.java:240) в org.apache.pig.backend.hadoop20.PigJobControl.run (PigJobControl.java:121) в java.langTh.выполнить (Thread.java:748) в org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher $ 1.run (MapReduceLauncher.java:270)