2013-10-27 34 views
0

剛剛開始使用HDInsight。UDD的Hdinsight豬默認文件夾

我想在豬咕嚕模式下注冊一個UDF,但無論是不工作,或者我不知道在哪裏放置jar文件,以便豬加載它。 (C:\ apps \ dist \ pig-0.9.3-SNAPSHOT \ lib)和豬根文件夾(C:\ apps \ dist)中的jar文件\豬-0.9.3-SNAPSHOT)並沒有什麼工作對我來說,只是不斷收到這樣的:

REGISTER elephant-bird-pig-3.0.0.jar; 

和反應是:

2013年10月27日09:28:53466 [主] ERROR 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。

謝謝

+0

我成功地通過把它們放在bin文件夾中加載的UDF。 –

回答

1

你不應該把它們放在BIN文件夾長久,因爲如果節點被製作映像可能會丟失的文件。最好將它們放入Windows Azure存儲中。

  1. 將用於UDF的額外.jar複製到Windows Azure存儲Blob ... WASB。

    • 例如,您可以創建一個「PigExtras」文件夾。您的來源地點會有所不同,您的目的地位置將是您的容器和帳戶。通過Hadoop的命令行

    • 上傳:

    hadoop fs -copyFromLocal C:\files\MyUDF.jar wasb://[email protected]/PigExtras/MyUDF.jar

    hadoop fs -copyFromLocal c:\apps\dist\pig-0.11.0.1.3.1.0-06\piggybank.jar wasb://[email protected]/PigExtras/piggybank.jar

  2. 參考你的Pig Latin腳本的.jar位置得到它。我相信可以使用通配符來加載某個文件夾中的所有jar,但如果內部存在很多jar文件,那麼效率可能會很低。

    REGISTER wasb:///PigExtras/*.jar; myset = load 'wasb://[email protected]/data/file.txt' using MyUDF(); dump myset

+0

請[不要在您的帖子中使用簽名或標語](http://stackoverflow.com/help/behavior)。 – meagar

+0

我們終於選擇了最後一個選項,即使在清理HDInsight服務器時,也可以使用所有UDF的容器,這些UDF始終保留。 但我忘了這個問題,所以謝謝你的詳細解答。 –