1

我正在尝试通过 Java 运行 Pig 脚本。这是我的代码现在的样子:

public static void main(String[] args) throws JSONException, InterruptedException, IOException {    
    Properties props = new Properties();
    props.setProperty("fs.default.name", "hdfs://<some-value>:8020");
    props.setProperty("mapred.job.tracker", "<some-value>:54311");
    PigServer pigServer = new PigServer(ExecType.MAPREDUCE, props);

    Map<String, String> params = new LinkedHashMap<String, String>();
    params.put("INPUT_PATH", "hdfs://<some-input-value>");
    params.put("OUTPUT_FILE", "hdfs:///user/<some-username>/last-login-out");

    pigServer.registerScript("last-login-by-userid.pig", params);
}

但是每当我运行程序时,我都会得到:

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.

我已将pig-0.10.1我从 Apache 网站下载的文件夹移动到Applications并添加export PIG_HOME=/Applications/pig-0.10.1到我的~/.bash_profile.

当我登录<some-value>:8020服务器时,我可以很好地运行 Pig 脚本。

4

2 回答 2

2

你的hadoop安装在哪里?在我的系统上,配置在/etc/hadoop/conf. 将此添加到 Java 程序的类路径中。

比如由于种种原因,我没有使用安装pig好的bash脚本;我只是这样称呼 Pig 的Main课:

java -cp /path/to/pig-0.10.0.jar:/etc/hadoop/conf org.apache.pig.Main`
于 2013-02-05T17:41:52.787 回答
0

从 Java 运行 Pig 时,我遇到了同样的异常。将 hadoop conf 目录的路径添加到项目属性库添加 jar/文件夹后,此问题已解决

参考:http ://helpmetocode.blogspot.in/2012/04/exception-in-thread-main.html

谢谢,

卡莱

于 2014-03-04T10:44:37.397 回答