pig:如何动态传递n个参数值

uxh89sit  于 2021-06-21  发布在  Pig
关注(0)|答案(1)|浏览(393)

我有一个不断增长的id列表,我想动态地传递到pig脚本中,以帮助处理单个列的数据。
我手动传递param值,这是不可伸缩的。
命令示例:

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个参数值并将它们应用于同一列的区域运算符?

vwoqyblh

vwoqyblh1#

如果我必须解决这个问题,我会:-
1> 创建一个简单的文本文件(比如id.txt)并继续向其添加新闻id。
2> 在我的pig脚本中使用id.txt与$input文件连接,如果找不到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;

相关问题