If statement 清管器,如果其他条件

If statement 清管器,如果其他条件,if-statement,apache-pig,conditional,If Statement,Apache Pig,Conditional,我有一个文件,我正在加载到pig,并在上面做了一些很好的工作。一切都很顺利,直到我达到需要使用条件的程度,一种if-else语句。我想检查变量syn是否为空,在这种情况下(如果为真),值将为1,否则为0 这是密码 B = foreach A generate t, (syn!='' ? 1 : 0) as s; 命令运行时不会出现故障,但当我转储结果时,会发生以下情况: (8758.414086,) (8758.457255,1) 因此,当条件为真时,该值被添加到B。但是,我似乎无法理解为什

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

这是密码

B = foreach A generate t, (syn!='' ? 1 : 0) as s;
命令运行时不会出现故障,但当我转储结果时,会发生以下情况:

(8758.414086,)
(8758.457255,1)
因此,当条件为真时,该值被添加到B。但是,我似乎无法理解为什么在地球上忽略了else部分,而不是添加0。任何帮助都将不胜感激

编辑:对于任何感兴趣的人,我都找到了解决方案,尽管原始问题仍然存在。我使用了

B=foreach A生成t,(syn不为null?1:0)作为s


它就像一个符咒。然而,我的问题仍然存在。

我认为答案如下:

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

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


因此,如果希望将空字符串作为“”而不是null加载,则需要一个自定义加载程序。

我认为答案如下:

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

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

因此,如果希望将空字符串作为“”而不是null加载,则需要自定义加载程序