位置变量上的 Pig 过滤器

Pig Filter on Positional Variable

我正在尝试过滤位置变量。

X = FILTER C BY( matches '.*USD.*');
STORE X into '$output' using PigStorage(',');

以上语句不起作用,但如果我尝试只输出 $14

E = FOREACH C GENERATE FLATTEN();
STORE C into '$output' using PigStorage(',');

效果很好

示例数据:

304a285281be,1383027928890968764,receiver,10C,655362,C2,USD811289,1,0,0,ebay_checkout,cc,cc,USD2659,USD120
304a285281be,1383027928890968764,receiver,10C,655362,C2,USD811289,1,0,0,ebay_checkout,cc,cc,USD2659,USD0
304a285281be,1383027928890968764,receiver,10C,655362,C2,USD811289,1,0,0,ebay_checkout,cc,cc,USD2659,GBP0

示例输出

304a285281be,1383027928890968764,receiver,10C,655362,C2,USD811289,1,0,0,ebay_checkout,cc,cc,USD2659,USD0
304a285281be,1383027928890968764,receiver,10C,655362,C2,USD811289,1,0,0,ebay_checkout,cc,cc,USD2659,GBP0

在'BY'和'('之间添加一个space

    X = FILTER C BY (FLATTEN() matches '.*USD.*');
    STORE X into '$output' using PigStorage(',');

你的输入对我有用:

A = LOAD 'StackFile.txt'  using PigStorage(',');
B = FILTER A BY ( matches '.*USD.*');
DUMP B;

Blockquote

304a285281be,1383027928890968764,receiver,10C,655362,C2,USD811289,1,0,0,ebay_checkout,cc,cc,USD2659,USD120 304a285281be,1383027928890968764,receiver,10C,655362,C2,USD811289,1,0,0,ebay_checkout,cc,cc,USD2659,USD0