pig里面没有if:不能判断一个条件后决定一个执行步骤
2015-05-06 15:53
513 查看
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
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
相关文章推荐
- pig里面没有if:不能判断一个条件后决定一个执行步骤
- 草泥马的Shell if 条件判断 如果 == 左右没有空格,不会报错并且按照True来执行。草泥马的
- 模拟申请账户,两次密码相同,用户名大于6位,密码不能为空判断,(这是一个布局框架,没有里面的运行代码)
- 输入三个数,用条件表达式,不能用if语句,判断是不是两个奇数一个偶数,是就输出Y,不是就输出N。
- 求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)
- C标签和s标签的对比,特别是里面的if判断条件的写法
- C标签和s标签的对比,特别是里面的if判断条件的写法
- 求1+2+…+n 要求不能使用 乘 除 法、for、while、if、else、switch、case等关键字以及条件判断语句
- 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)
- shell里面if条件判断
- 剑指Offer(Java版): 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
- 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)
- 作业3(4)循环输入多个年份 year,判断该年是否为闰年。判断闰年的条件是:能被 4 整除但不能被100 整除,或者能被 400 整除。输入-1退出程序执行
- 求1+2+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A? B:C)
- CaterUI CRUD Bll语句放在IF里面执行,然后判断bool
- mybatis sql中if判断传入Integer类型,传入0时,判断没有执行
- 题目:求1+2+…+n, 要求不能使用乘除法、for、while、if、else、switch、case 等关键字以及条件判断语句
- 求1+2+3+...+n,要求不能使用乘除法,for,while,if,else,switch,case等关键字以及条件判断语句
- java工程项目里,在一个包里面,不能出现同名的类名,这问题是刚接触java才会遇到的,特别是新手一般都没有建立包,而是使用默认的,易出现同名的类名,导致eclipse提示错误
- 题目:求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)