2016-09-19 3 views
3

Я пытаюсь запустить свинью скрипты удаленно из моей Java машины, для этого я написал ниже кодОшибка выполнения PigServer в Java

код:

import java.io.IOException; 
import java.util.Properties; 
import org.apache.pig.ExecType; 
import org.apache.pig.PigServer; 
import org.apache.pig.backend.executionengine.ExecException; 

public class Javapig{ 
public static void main(String[] args) { 
try { 
    Properties props = new Properties(); 
    props.setProperty("fs.default.name", "hdfs://hdfs://192.168.x.xxx:8022"); 
    props.setProperty("mapred.job.tracker", "192.168.x.xxx:8021"); 

    PigServer pigServer = new PigServer(ExecType.MAPREDUCE, props); 
    runIdQuery(pigServer, "fact"); 
    } 
    catch(Exception e) { 
     System.out.println(e); 
    } 
} 
public static void runIdQuery(PigServer pigServer, String inputFile) throws IOException { 
    pigServer.registerQuery("A = load '" + inputFile + "' using org.apache.hive.hcatalog.pig.HCatLoader();"); 
    pigServer.registerQuery("B = FILTER A by category == 'Aller';"); 
    pigServer.registerQuery("DUMP B;"); 
    System.out.println("Done"); 
} 
} 

, но во время выполнения я получаю ниже ошибка.

Ошибка

ERROR 4010: Cannot find hadoop configurations in classpath (neither hadoop-site.xml nor core-site.xml was found in the classpath). 

Я не знаю, что я делаю неправильно.

ответ

1

Ну, ошибка описания собственной ...

не

ни Hadoop-site.xml, ни ядро-site.xml был найден в пути к классам

Вам нужны оба эти файлы в пути к классам вашей заявки.

Вы в идеале бы получить те из папки $HADOOP_CONF_DIR, и вы бы скопировать их в ваш в Java src/main/resources, предполагая, что у вас есть структура Maven

Кроме того, с этими файлами, вам лучше использовать Configuration объект для Hadoop

PigServer(ExecType execType, org.apache.hadoop.conf.Configuration conf) 
Смежные вопросы