猪:删除内袋中的元组

Pig: remove tuples in inner bag

数据是这样的:

A: {id: int, data: {ARRAY_ELEM:(score:float, flag:boolean)}}
12, {(1.35, True), (2.46, False)}
13, {(0.98, False)}
14, {(0.23, True), (0.95, True)}

我想删除所有标记为 False 的元组,而不展平数据。 预期输出:

12, {(1.35, True)}
13, {}
14, {(0.23, True), (0.95, True)}

有什么方法可以在 Pig Latin 中做到这一点吗?谢谢!!

尝试嵌套 foreach。

A = LOAD 'input.txt' AS (id: int, data:bag{(score:float, flag:boolean)});
B = FOREACH A {
    filtered_data = FILTER data by flag == true;
    GENERATE id, filtered_data;
}
store B into '$output';

请注意,您的输入文件不应包含任何 space 布尔值。 (意思是“{(1.35,[space]True),(2.46,[space]False)}”应该是“{(1.35,True),(2.46,False)}”没有spaces 在逗号之后。否则,您需要将它们作为字符数组加载。