2016-08-11 17 views
0

我有一個不斷增加的ID列表,我想動態傳遞到一個豬腳本中以幫助處理單個列的數據。PIG:如何動態傳遞N個參數值

我手動傳遞參數值,這是不可擴展的。

命令EX:

pig --param id1=123 id2=456 id3=789 get foo.pig 

腳本示例

A = load '$INPUT' using AvroStorage(); 
B = foreach A generate value.rawData#'id' as user_id:chararray; 
C = FILTER B BY user_id == '$id1' or user_id == '$id2' OR user_id == '$id3'; 
DUMP C; 

一個如何動態傳遞n個參數值,並讓它們施加到一個區域操作者爲同一列?

回答

0

如果我要解決這個問題,我將: -

1>創建一個簡單的文本文件(比如id.txt)繼續追加消息的ID給它。

2>使用id.txt我PIG腳本中以$輸入文件的加入,記錄將被自動過濾,如果ID未找到: -

A = load '$INPUT' using AvroStorage(); 
A = foreach A generate value.rawData#'id' as user_id:chararray; 
B = load 'id.txt' using PigStorage as (userId:chararrray); 
C = JOIN A by user_id B by userId ; 
-- after above JOIN C will only contain records which has user_id in both files 
DUMP C;