2013-01-09 89 views
0

我在Cygwin的Windows XP上安裝了PIG(0.10.0)。我還設置了JAVA_HOME變量。但是現在當我運行pig -help的時候,我得到了「找不到pig.jar。做'罐子',然後再試一次」。我沒有安裝hadoop(使用嵌入式版本)。在Windows XP上使用Cygwin的PIG

另外,當我跑的命令爲第一次設置JAVA_HOME後,我得到以下警告:

cygwin的警告: MS-DOS樣式路徑檢測:C:\豬\ PIG-01〜1.0/pig.jar 首選的POSIX相當於:/cygdrive/c/Pig/PIG-01~1.0/pig.jar CYGWIN環境變量選項「nodosfilewarning」會關閉此警告。 有關POSIX路徑的更多詳細信息,請參閱用戶指南: ... 找不到pig.jar。做'螞蟻罐',然後再試一次

我找不到它從哪裏讀取此路徑。任何幫助將非常感激。

回答

1

我可以回答您的具體問題,但必須警告我,我的PC上的cygwin UNIX模擬器上還沒有豬工作。我會告訴你我所知道的。

消息:'找不到pig.jar。做'樽'然後再試一次。'來自豬殼腳本末尾附近的一段代碼。你正在使用豬-0.10.0。我試圖讓豬-0.1.1工作,但收到與你一樣的錯誤信息。如果未安裝Hadoop,則沒有目錄將環境變量HADOOP_BIN指向shell腳本,因爲該腳本使用 - HADOOP_BIN = which hadoop - 來設置它。因此,在腳本結尾附近沒有設置HADOP_BIN,代碼分支需要pig.jar或pig - ?。!(* withouthadoop).jar在$ PIG_HOME給定的位置,以便放入變量PIG_JAR中。你的shell腳本找不到這些,所以PIG_JAR是空的,因此是錯誤信息。

if [-n「$ PIG_JAR」];然後
CLASSPATH = 「$ {CLASSPATH}:$ PIG_JAR」
其他
回聲 「無法找到pig.jar做「蟻族罐子,然後再試一次。」
1號出口
網絡

的java的容器pig.jar不存在於您的目錄中,因爲豬沒有使用ant構建。但實際上,腳本應該找到豬。?.((*))。你的目錄中會有pig-0.10.0.jar,模式匹配意味着pig-後跟一個單個字符。其次是任何東西,除了以'withouthadoop'結尾的東西,其次是.jar。 'withouthadoop'表示該jar不包含嵌入的hadoop,因此hadoop必須已經安裝。如果hadoop沒有安裝,看起來,pig-0.10.0.jar應該沒問題。

那麼爲什麼不找到它呢?在shell腳本中,運行cygwin腳本的人的代碼的一小段代碼爲UNIX:

if $ cygwin;然後
CLASSPATH = cygpath -w "$CLASSPATH"
PIG_HOME = cygpath -d "$PIG_HOME"
PIG_LOG_DIR = cygpath -d "$PIG_LOG_DIR"
音響

該轉換通入的java.exe路徑成一種形式,的java.exe將理解,因爲它是一個Windows可執行文件。我發現在這些表達式中使用-m而不是-w或-d - 使用cygpath來轉換例如/ cygdrive/c/Program Files/Java ..到c:/ Program Files/Java ..使用正斜槓 - 哪些-m規定 - 起作用。

在'pig.jar'找不到org.apache.pig.Main'後,我經歷了更多的痛苦(是的,我在找出上述之前'anted'),終於有了'grunt>'提示。爲了實現這一點,我對豬殼腳本所作的改動如下:

  • 刪除整個if $ cygwin; ...如上所述。我假設將$ PIG_HOME轉換爲Windows文件路徑格式導致代碼塊:if [-f $ PIG_HOME/pig.jar];然後; PIG_JAR = $ PIG_HOME/pig.jar;其他; PIG_JAR = echo $PIG_HOME/pig-?.!(*withouthadoop).jar; fi丟出你看到的錯誤:cygwin警告,檢測到MS-DOS樣式路徑:c:\ pig \ pig-01〜1/pig.jar等。

  • 繼您刪除cygwin路徑翻譯塊,重寫PIG_OPTS變量的設置爲:

PIG_OPTS = 「$ PIG_OPTS -Dpig.log.dir = cygpath -m $PIG_LOG_DIR
PIG_OPTS = 「$ PIG_OPTS -DPIG.log.file = pig.log」
PIG_OPTS =「$ PIG_OPTS -Dpig.home.dir = cygpath -m $PIG_HOME

  • 重寫的代碼行的調用java.exe的shell腳本的末尾 - EXEC 「$ JAVA」 ..爲:

的exec 「$ JAVA」 $ JAVA_HEAP_MAX $ PIG_OPTS -classpath「cygpath -p -m $CLASSPATH 「$ CLASS‘$ {剩餘[@]}’

  • 在PIG_HOME創建一個‘登錄’目錄

  • 放入.bashrc文件以下導出項在主目錄初始化環境當基礎變量^ h殼開始:

出口PATH = 「$ PATH:/ cygdrive/C/Program Files文件/的Java/JDK-your_version /斌:/ cygdrive/..你的豬回家/ BIN」
出口JAVA_HOME = 「/ cygdrive/C/Program Files文件/的Java/JDK-your_version」
出口CLASSPATH = 「」

所有這一切都讓我輸入 '豬-x地方',我得到了 '咕嚕>' 提示符。有趣的是,通過下載pig-0.7.0,解壓pig-0.7.0.tar.gz文件並運行pig -x local,它立即可用於開箱即用。同樣的'grunt>'提示。

但是,不幸的是,這是一個虛假。在這兩種情況下。虛僞的咕嚕聲 - 一個口腹禪師的咕嚕聲。箭頭鍵將光標移動到整個提示中 - 實際上您在屏幕上的任何位置 - 返回鍵不會輸入任何內容,無論您是否輸入了內容,只有控制+反斜槓才能返回美元提示。如果你明白了這一點,請告訴我。