2015-11-12 27 views
0

我正試圖根據第一個模式中的ID從模式中篩選出一組描述。基於Pig中的ID的篩選器組

我對豬很新,所以很難得到這一點。

這裏是我所建的這是不工作的代碼:

changeReason = LOAD 'Change_Reason.txt' USING org.apache.pig.piggybank.storage.CSVExcelStorage('|', 'NO_MULTILINE', 'UNIX', 'SKIP_INPUT_HEADER') 
    AS (changeReasonID:int, reasonName:chararray); 
price = LOAD '$directory/Price.txt' USING org.apache.pig.piggybank.storage.CSVExcelStorage('|', 'NO_MULTILINE', 'UNIX', 'SKIP_INPUT_HEADER') 
    AS (priceID:int, changeReasonID:int); 

priceChangeReasonIDs = GROUP price BY changeReasonID; 
subGroup = FOREACH priceChangeReasonIDs 
{ 
    change = FILTER changeReason BY changeReasonID == group.changeReasonId; 
    GENERATE group AS changeID, change.reasonName AS Reason; 
}; 

該代碼給我下面的錯誤:

Failed to parse: Pig script failed to parse: 
<file load_historical_price.pig, line 108, column 20> expression is not a project expression: (Name: ScalarExpression) Type: null Uid: null) 
+0

Plz。爲用例 –

+0

添加輸入和預期輸出,並提供變換的原始數據,你正在按照PriceChangeReasonId進行分組 – kecso

+0

對不起,我正在取出專有信息,並且transformationRaw應該是價格。現在改變它。 當我將文件放在我面前時,會在今天晚些時候獲取輸入和輸出。 – Khirok

回答

0

願這工作示例幫助:

如果據我所知,您希望通過group元素篩選多分組數據。

因此,這裏是我的示例腳本:

data = LOAD 'SO/data.txt' USING PigStorage(' ') AS (val:int, id1:chararray, id2:int); 
DESCRIBE data; 
dgroup = GROUP data BY (id1, id2); 
DESCRIBE dgroup; 
dfilter = FILTER dgroup BY group.id1 == 'B'; 
DESCRIBE dfilter; 
DUMP dfilter; 

這由ID1過濾分組(ID1,ID2)數據。

例輸入:

12 A 1 
22 A 2 
32 B 1 
33 B 2 
43 B 1 
55 A 2 
77 B 2 
88 A 1 

而且DUMP的結果:

((B,1),{(43,B,1),(32,B,1)}) 
((B,2),{(77,B,2),(33,B,2)}) 

這是你想要做什麼?