无法在 Apache Pig 中过滤 NULL 值

Posted

技术标签:

【中文标题】无法在 Apache Pig 中过滤 NULL 值【英文标题】:Cannot filter NULL values in Apache Pig 【发布时间】:2017-04-28 11:36:55 【问题描述】:

我正在尝试从 Pig 中的 CSV 文件中过滤 NULL 和 Empty 字段。我已经使用 CSVExcel 存储来加载数据并删除标题。下面是我试过的猪脚本。

REGISTER /usr/lib/pig/piggybank.jar;
inp = load 'test.csv' USING org.apache.pig.piggybank.storage.CSVExcelStorage(',','YES_MULTILINE','NOCHANGE','SKIP_INPUT_HEADER');
a = foreach inp generate (INT)$0 as id, (CHARARRAY)$1 as name, (CHARARRAY)$2 as dept;
b = filter a by (id is not null) AND (name is not null) AND NOT(name MATCHES '') AND (dept is not null) ;

示例输入:

id,name,dept

1,Avy,NULL

2,,CS

3,Sam,Mech

转储 b 后,输出如下。

(1,Avy,NULL)

(3,Sam,Mech)

理想情况下,我也不想要第一条记录,因为它包含 NULL。有人可以推荐吗?

【问题讨论】:

【参考方案1】:

最后,这对我有用!

b = filter a by (id is not null) AND (name is not null) AND NOT(name MATCHES '') AND (dept!= 'NULL');

谢谢各位!

【讨论】:

以上是关于无法在 Apache Pig 中过滤 NULL 值的主要内容,如果未能解决你的问题,请参考以下文章

当值为 NULL 时,Apache Pig 不尊重 ELSE 语句

pig:过滤掉空字符串

Apache Pig:用字符串替换 null

如何使用 apache Pig 插入过滤数据的索引?

在 Apache Pig 中过滤数据

计算过滤的值 - Apache PIG