Apache Pig:用字符串替换 null
Posted
技术标签:
【中文标题】Apache Pig:用字符串替换 null【英文标题】:Apache Pig: Replace null with string 【发布时间】:2012-06-07 10:30:14 【问题描述】:我的数据中有很多空条目。由于稍后的处理,如果我可以将 null 的默认值设置为字符串“其他”,这将非常有帮助。我找不到这样做的方法(版本 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”。
非常感谢。
【问题讨论】:
我也一直想要这个。我认为不编写 UDF 在 pig 0.9.2 + piggybank 中是不可能的。 【参考方案1】:所以我唯一能找到的是 ?: 三元运算符。这使得整个 pig 脚本有点冗长,但是很好,它可以工作:-)
(((ami MATCHES '.datatype.') ? REGEX_EXTRACT(name, '^(?:([^.]+)\.?)5', 1) : 'other') IS NULL ? 'other' : ((ami MATCHES '.datatype.') ? REGEX_EXTRACT(name, '^(?:([^.]+)\.?)5', 1) : 'other')) AS datatype
【讨论】:
嗨,这也适用于整数字段吗?您不能使用整数字段制作“IS NULL”命令吗?以上是关于Apache Pig:用字符串替换 null的主要内容,如果未能解决你的问题,请参考以下文章