从猪的元组中过滤出一个空列

时间:2016-06-07 12:58:48

标签: apache-pig

我正在使用一个用例,我们必须从元组中删除空值

    A =
    (7,Ron,ron@abc.com)
    (8,,rina@xyz.com )
    (9,Don,)
    (9,Don,dmes@xyz.com)
    (10,Maya,maya@cnn.com)



    B = FILTER A BY col2 != ''; 

输出: -

    (7,Ron,ron@abc.com)
    (9,Don,dmes@xyz.com)
    (10,Maya,maya@cnn.com)

此处过滤器运算符过滤第二行。但是我们必须过滤该列。

预期输出应该是这样的:

(7,Ron,ron@abc.com)
(8,rina@xyz.com)
(9,Don,dmes@xyz.com)
(9,Don)
(10,Maya,maya@cnn.com)

1 个答案:

答案 0 :(得分:0)

我们可以将关系拆分为子关系,项目所需的列,然后将结果合并在一起: 因此,如果第一列不可为空,则第二列和第三列可以为空,但总是我们至少有一个,那么:

SPLIT A INTO col1null IF $1 is null, col2null  IF $2 is null, allnotnull IF ($1 is not null AND $2 is not null);
col1reject = FOREACH col1null GENERATE $0,$2; --remove column $1
col2reject = FOREACH col2null GENERATE $0,$1; --remove column $2
OUT = UNION allnotnull ,col1reject , col2reject ;