我可以回答您的具體問題,但必須警告我,我的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‘$ {剩餘[@]}’
出口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>'提示。
但是,不幸的是,這是一個虛假。在這兩種情況下。虛僞的咕嚕聲 - 一個口腹禪師的咕嚕聲。箭頭鍵將光標移動到整個提示中 - 實際上您在屏幕上的任何位置 - 返回鍵不會輸入任何內容,無論您是否輸入了內容,只有控制+反斜槓才能返回美元提示。如果你明白了這一點,請告訴我。