1

私はPigジョブを学習しており、PigServerを使用してJavaコードを介してリモートクラスターでpigスクリプトを実行したいと考えています。誰かがこれを達成する方法を教えてもらえますか?前もって感謝します。

4

2 に答える 2

3

上記のコードを使用してリモート呼び出しを行うことはできますか?つまり、Pigはcluster1にインストールされ、呼び出しはクラスター外のアプリケーションサーバーから行われますか?

于 2014-03-28T10:57:59.767 に答える
2

PigServerクラスを使用してクラスターに接続し、Pigクエリを登録して、結果を取得する必要があります。ディスクにファイル名を渡してスクリプトを実行するか、Pigスクリプト行を直接記述してJava文字列として渡すかを選択できます。

ファイル名からPigスクリプトを渡すには:

PigServer pig = new PigServer(ExecType.MAPREDUCE);
pig.registerScript("/path/to/test.pig");

Pigプログラムを文字列として渡すには:

PigServer pig = new PigServer(ExecType.MAPREDUCE);
pig.registerQuery("A = LOAD 'something' USING PigLoader();");

たとえば、次の方法で結果を返すことができます。

Iterator<Tuple> i = pig.openIterator("A");
HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
while (i.hasNext()) {
    Integer val = DataType.toInteger(i.next().get(0));
    map.put(val, val);            
}

クラスパスにいくつかのプロパティが必要であることに注意してください。つまりfs.default.name、およびまたはそれらをコンストラクターmapred.job.trackerに追加するだけです。PigServer

于 2013-01-24T19:44:19.160 に答える