Apache Pig:用字符串替换null

时间:2012-06-07 10:30:15

标签: hadoop apache-pig

我的数据中有很多空条目。由于后来的处理,如果我可以将null的默认值设置为字符串“other”将非常有用。我找不到办法(版本0.8.1-cdh3u4)

另外,我的GENERATE语句中有一些变量可能会返回null,我需要类似于SQL DECODE函数来获取“其他”字符串而不是null。

示例:

tmp = FOREACH dump GENERATE site, REGEX_EXTRACT(name, '^(?:([^.]+)\\.?){1}', 1) AS project, ((ami MATCHES '.*datatype.*') ? REGEX_EXTRACT(name, '^(?:([^.]+)\\.?){5}', 1) : 'other') AS datatype, ami, duid, nbfiles, length, rnbfiles, rlength, name; 

这里:'site'和'datatype'可以返回一个空字符串(有效)并被解释为null,但应该是“other”。

非常感谢。

1 个答案:

答案 0 :(得分:1)

所以我唯一能找到的就是?:三元运算符。这使整个猪脚本有点冗长,但是,它有效: - )

(((ami MATCHES '.datatype.') ? REGEX_EXTRACT(name, '^(?:([^.]+)\.?){5}', 1) : 'other') IS NULL ? 'other' : ((ami MATCHES '.datatype.') ? REGEX_EXTRACT(name, '^(?:([^.]+)\.?){5}', 1) : 'other')) AS datatype