我是Linux和Apache Pig的新手。我正在學習本教程學習豬: http://salsahpc.indiana.edu/ScienceCloud/pig_word_count_tutorial.htm豬初學者的例子[意外錯誤]
這是一個基本的字數統計的例子。數據文件'input.txt'和程序文件'wordcount.pig'在Wordcount軟件包中,鏈接到站點上。
我已經在本地機器上下載了Pig 0.11.1
,以及Hadoop
和Java 6
。
當我下載Wordcount軟件包時,它將我帶到「tar.gz
」文件。我對這種類型不熟悉,不確定如何提取它。它包含文件'input.txt','wordcount.pig'和一個自述文件。我將「input.txt
」保存到我的桌面。我不確定在哪裏保存wordcount.pig,並決定在shell中逐行輸入命令。
我在本地模式下運行豬如下:pig -x local
,然後我就複製粘貼在繁重的wordcount.pig腳本的每一行>提示是這樣的:
A = load '/home/me/Desktop/input.txt';
B = foreach A generate flatten(TOKENIZE((chararray)$0)) as word;
C = group B by word;
D = foreach C generate COUNT(B), group;
轉儲d ;
這會產生以下錯誤: ...
Retrying connect to server: localhost/127.0.0.1:8021. Already tried 9 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS)
ERROR org.apache.pig.tools.grunt.Grunt - ERROR 2043: Unexpected error during execution.
我的問題:
1. 我應該保存 'input.txt中' 和原 'wordcount.pig' 腳本目錄中的一些特殊文件夾pig-0.11.1?也就是說,在pig-0.11.1中創建一個名爲word的文件夾,並在其中放入'wordcount.pig'和'input.txt',然後從grunt>提示符中鍵入「wordcount.pig」? 一般來說,如果我有數據說'dat.txt'和一個腳本說'program.pig',我應該在哪裏保存它們以從grunt shell運行'program.pig'?我認爲他們都應該去豬-0.11.1,所以我可以做$ pig -x local wordcount.pig,但我不確定。
2. 爲什麼我不能像我試圖一樣運行腳本? 我已經在load語句中指定了文件'input.txt'的位置。 那麼,爲什麼它不只是逐行運行命令並將D的內容轉儲到我的屏幕?
3. 當我嘗試使用$豬的MapReduce模式下運行豬,它給出了這樣的錯誤:
重試策略是RetryUpToMaximumCountWithFixedSleep(maxRetries = 10,休眠時間= 1秒) 2013年6月3日23 :57:06,956 [main] ERROR org.apache.pig.Main - 錯誤2999:意外的內部錯誤。無法創建DataStorage
感謝您的回答。你說得對,Hadoop namenode似乎有些問題。但是我仍然有一個關於如何從grunt shell運行腳本wordcount.pig的一般問題。我應該在目錄 - pig-0.11.1中擁有數據input.txt和wordcount.pig嗎?如果我想運行豬腳本(在本地模式下),我應該在哪裏保存輸入數據文件和腳本本身?再次感謝您的回答! – user2450223
無論你想要什麼,你都可以做到。如果'LOAD'語句中的路徑是相對的,那麼當你啓動Grunt時,它會查看你所在的目錄。在你的例子中,路徑是絕對的,所以沒關係。如果您複製並粘貼腳本,當然它保存的位置並不重要;你也可以用'RUN/path/to/script;'來運行它。如果你使用絕對路徑,你永遠不會有問題。 –
謝謝。爲了讓它完全直觀:我可以在grunt shell提示符下說RUN /home/me/Desktop/wordcount.pig?我還可以在grunt shell提示符下鍵入:grunt> cd〜/ Desktop,然後grunt> wordcount.pig,假設input.txt和wordcount.pig都在Desktop中?再次感謝您的答案! – user2450223