pig if else条件

yv5phkfx  于 2021-06-21  发布在  Pig
关注(0)|答案(1)|浏览(310)

我有一个文件,我正在加载到Pig和做一些很好的工作。一切都很顺利,直到我达到需要使用条件的程度,一种if-else语句。我想检查变量syn是否不为空,在这种情况下(如果为真),值将为1,否则将为0。
这是密码

B = foreach A generate t, (syn!='' ? 1 : 0) as s;

命令运行时没有任何问题,但当我转储结果时,会发生以下情况:

(8758.414086,)
(8758.457255,1)

所以当条件为真时,值被加到b上。但是,我似乎不明白为什么在地球上的其他部分被忽略,而不是添加0。任何帮助都将不胜感激。
编辑:对于任何感兴趣的人,我找到了一个解决方案,尽管最初的问题仍然存在。而不是 == 接线员,我用过 B = foreach A generate t, (syn is not null ? 1 : 0) as s; 它就像一个魔咒。然而,我的问题仍然存在。

ej83mcc0

ej83mcc01#

我想答案是here:1
null和load函数pig拉丁加载函数(例如,pigstorage和textloader)在缺少数据的地方生成null值。例如,不加载空字符串(chararray);相反,它们被null替换。
比较运算符如果任一子表达式为null,则结果为null。
因此,如果希望空字符串作为“”而不是null加载,则需要自定义加载程序。

相关问题