2013-01-23 63 views
0

我嘗試了所有我能想到的排列方式,但我無法使CONCAT工作。Hadoop豬拉丁語,CONCAT功能失敗

當我嘗試:

假=負載CONCAT( '富', '酒吧');

我得到以下:

2013年1月17日12:41:44443 [主要] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1200:不匹配的輸入 'CONCAT' 期待QUOTEDSTRING

我已經嘗試過雙引號,我不希望這樣做,實際上並沒有;我試過 將參數傳遞給腳本並在它們上使用CONCAT,我得到相同的錯誤。

爲了激勵這一點,我試圖指定一個基本輸出目錄,它與各種可能的子輸出目錄連接,這取決於我想要的結果文件的位置。

順便說一句,我也嘗試:

假= LOAD '富' + '酒吧';

也就是說,不使用CONCAT。

我正在使用pig-0.10.1.jar - 我認爲這是最新版本。

+0

嗯,錯誤告訴你什麼是錯誤的。你應該提供一個(單引號字符串)的'LOAD',詳見http://pig.apache.org/docs/r0.8.1/piglatin_ref2.html#LOAD) – Seismoid

+0

沒錯,雖然我正在用STORE這是我真正想要的 - 所以似乎是需要單引號字符串的地方不是也可以使用CONCAT的地方?這是爲什麼? – Jeff

回答

3

您不能直接在LOAD內撥打CONCAT,但實際上您並不需要。您可以定義要在腳本中使用%declare或通過傳遞命令行參數/參數文件指定的參數常量。然後你可以使用$x表示法來解析參數,並且級聯在shell腳本中是隱含的:

%declare FOO 'foo' 
%declare BAR 'bar' 

fake = load '$FOO$BAR'; 
+0

我會嘗試你的建議 - 兩個問題:1.我試圖從STORE調用CONCAT,因爲我暗示。在加載或存儲過程中,錯誤都是說不能調用CONCAT,而是QUOTEDSTRING錯誤 - CONCAT應該在STORE內工作嗎? 2.爲什麼你不能在LOAD內調用CONCAT? – Jeff

+0

謝謝,就像你說的。不知道我是否錯過了Pig Latin的文檔中所陳述的內容,或者只是不清楚,但是做一些像'$ FOO $ BAR'這樣的東西讓我得到了我需要的東西 - 沒有使用CONCAT。 – Jeff