pig里面没有if:不能判断一个条件后决定一个执行步骤

pig是处理流 的工具,所以数据集是流对象,处理步骤也是一样的。

 

 

Pig中存在按条件处理流对象的方式有

1)filter

X= FILTER A BY (f1 == 8);

 

2)CASE WHEN THEN ELSE END

    CASE expression [ WHEN value THEN value ]+ [ELSE value ]? END

 

3)Bincond[?:]

    condition? value_if_true : value_if_false

 

4)SPLITaliasINTO alias IF expression, alias IF expression [, alias IF expression …] [,alias OTHERWISE];

    SPLIT A INTO X IF f1<7, Y IF f2==5, Z IF(f3<6 OR f3>6);

 

而判断表达式的组成主要有:

==, !=,>, <,>=,<=,matches,IsEmpty() 判空,is not null

 

但是,这些条件处理都必须针对一个流对象,col或者bag,或者整个对象。不能单独处理执行,也就是不能写出如

if A is not null then dump A;

这样是错的,dump 和store两种操作,不能放到其他操作语句中。就是说,没有if 这样单独的操作。

用udf进行store空对象时报错:

原来pig 1.4版本以前遇到null也会执行,之后的版本会直接过滤掉null记录,也就是说遇到null会直接返回,udf不执行该条记录,参见:

http://blog.csdn.net/wisgood/article/details/41851737

 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值