猪if if else条件

时间:2016-01-31 18:44:54

标签: if-statement apache-pig conditional

我有一个文件,我正在加载猪并做一些不错的工作。一切顺利,直到我达到我需要使用条件,一种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;

它就像一个魅力。不过我的问题仍然存在。

1 个答案:

答案 0 :(得分:0)

我认为答案就在这里:1

  

空值和加载函数   Pig Latin加载函数(例如,PigStorage和TextLoader)在缺少数据的地方生成空值。例如,未加载空字符串(chararrays);相反,它们被空值替换。

     

比较运算符   如果任一子表达式为null,则结果为null。

所以,如果您更喜欢空字符串加载为''而不是null,您需要一个自定义加载器。