maven—在java中以mapreduce模式启动pig服务器

q3aa0525  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(504)

我正试图从java程序运行pig命令。我希望pig在一个遥远的hadoop集群上以mapreduce模式运行。这是初始化pigserver的方法:

Properties configuration = new Properties();
PropertiesUtil.loadPropertiesFromFile(configuration, CONF_FILE);

configuration.setProperty("mapred.job.tracker", properties.getProperty(mapredJT_property, mapredJobTracker));
configuration.setProperty("fs.default.name", properties.getProperty(hdfsURI_property, fsDefaultName));

PigServer pigServer = new PigServer(ExecType.MAPREDUCE, configuration);

我经常会遇到这样的错误:

Exception in thread "main" org.apache.pig.backend.executionengine.ExecException: ERROR 4010: Cannot find hadoop configurations in classpath (neither hadoop-site.xml nor core-site.xml was found in the classpath). If you plan to use local mode, please put -x local option in command line
    at org.apache.pig.backend.hadoop.executionengine.HExecutionEngine.init(HExecutionEngine.java:162)
    at org.apache.pig.backend.hadoop.executionengine.HExecutionEngine.init(HExecutionEngine.java:122)
    at org.apache.pig.impl.PigContext.connect(PigContext.java:301)
    at org.apache.pig.PigServer.<init>(PigServer.java:220)
    at org.apache.pig.PigServer.<init>(PigServer.java:205)
    at org.apache.pig.PigServer.<init>(PigServer.java:197)
    at com.mycompany.testpig.idmapreduce.toto(idmapreduce.java:68)
    at com.mycompany.testpig.idmapreduce.main(idmapreduce.java:46)

我找不到方法将hadoop-site.xml和core-site.xml文件提供给pig,以便它正确启动服务器。我一直在尝试设置这里描述的变量,没有结果。我正在使用maven和netbeans来运行/测试我的程序。我还试着把这两个文件放在我的项目的根目录下(src/旁边),但没有成功。
如果你有解决办法,请告诉我!
谢谢。

zsbz8rwp

zsbz8rwp1#

我找到了解决这个问题的方法,只需在src/main/resources中放置一个空的core-site.xml。maven在编译时将其复制到target/classes中,因此在我运行程序时它会自动出现在classpath中。
希望它能帮助别人。
菲利普

bkhjykvo

bkhjykvo2#

我在从java运行pig时遇到了同样的异常。在将hadoop conf目录的路径添加到项目属性库add jar/文件夹之后,这个问题就解决了
裁判:http://helpmetocode.blogspot.in/2012/04/exception-in-thread-main.html
谢谢,
卡莱

相关问题