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.

Apache Web サイトからダウンロードしたpig-0.10.1フォルダーを移動し、.Applicationsexport PIG_HOME=/Applications/pig-0.10.1~/.bash_profile

サーバーにログインすると<some-value>:8020、Pig スクリプトを問題なく実行できます。

4

2 に答える 2

2

Hadoop のインストール先はどこですか? 私のシステムでは、設定は の下にあり/etc/hadoop/confます。これを Java プログラムのクラスパスに追加します。

たとえば、さまざまな理由から、インストールされているpigbash スクリプトは使用しません。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/folder を追加します。

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

ありがとう、

カライ

于 2014-03-04T10:44:37.397 に答える