我有一个文件,我正在加载猪并做一些不错的工作。一切顺利,直到我达到我需要使用条件,一种if-else语句的程度。我想检查变量 syn 是否为空,在这种情况下(如果为TRUE)值为1,否则为0。
这是代码
B = foreach A generate t, (syn!='' ? 1 : 0) as s;
该命令运行没有故障但是当我转储结果时,会发生这种情况:
(8758.414086,)
(8758.457255,1)
因此,当条件为TRUE时,该值将被添加到B.但是,我似乎无法理解为什么在地球上将其他部分排除在外,而不是添加0.任何帮助都会非常感激。
编辑:对于任何有兴趣的人我都找到了解决方案,尽管最初的问题仍然存在。我使用
而不是==
运算符
B = foreach A generate t, (syn is not null ? 1 : 0) as s;
它就像一个魅力。不过我的问题仍然存在。
答案 0 :(得分:0)
我认为答案就在这里:1
空值和加载函数 Pig Latin加载函数(例如,PigStorage和TextLoader)在缺少数据的地方生成空值。例如,未加载空字符串(chararrays);相反,它们被空值替换。
比较运算符 如果任一子表达式为null,则结果为null。
所以,如果您更喜欢空字符串加载为''而不是null,您需要一个自定义加载器。