0

HDInsight を使い始めたばかりです。

Pig Grunt モードで UDF を登録したいのですが、それが機能しないか、Pig がロードするために jar ファイルをどこに置くべきかわかりません。

今私がしたことは、jar ファイルを lib フォルダー (C:\apps\dist\pig-0.9.3-SNAPSHOT\lib) と pig root フォルダー (C:\apps\dist\pig-0.9) に入れることです。 .3-SNAPSHOT) であり、私には何も機能しません。これを取得し続けてください:

REGISTER elephant-bird-pig-3.0.0.jar;

応答は次のとおりです。

2013-10-27 09:28:53,466 [メイン] エラー org.apache.pig.tools.grunt.Grunt - エラー 101: ローカル ファイル 'elephant-bird-pig-3.0.0.jar' が存在しません。ログファイルの詳細: C:\apps\dist\hadoop-1.1.0-SNAPSHOT\logs\pig_1382864851131.log

この UDF を登録する場所と方法を教えてください。

ありがとうございました

4

1 に答える 1

1

ノードが再イメージ化されるとファイルが失われる可能性があるため、それらを BIN フォルダーに長時間配置しないでください。それらを Windows Azure ストレージに配置することをお勧めします。

  1. UDF 用の追加の .jar を Windows Azure Storage Blobs... WASB にコピーします。

    • たとえば、「PigExtras」フォルダーを作成できます。ソースの場所はさまざまであり、宛先の場所はコンテナーとアカウントになります。

    • Hadoop コマンド ライン経由でアップロードします。

    hadoop fs -copyFromLocal C:\files\MyUDF.jar wasb://container@account.blob.core.windows.net/PigExtras/MyUDF.jar

    hadoop fs -copyFromLocal c:\apps\dist\pig-0.11.0.1.3.1.0-06\piggybank.jar wasb://container@account.blob.core.windows.net/PigExtras/piggybank.jar

  2. Pig ラテン スクリプトで .jar の場所を参照します。ワイルドカードを使用して特定のフォルダーからすべての jar をロードできると思いますが、そこに多くの jar がある場合は非効率になる可能性があります。

    REGISTER wasb:///PigExtras/*.jar; myset = load 'wasb://container@account.blob.core.windows.net/data/file.txt' using MyUDF(); dump myset

于 2013-12-05T02:11:04.277 に答える