zoukankan      html  css  js  c++  java
  • 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



  • 相关阅读:
    .net软件开发工程师面试题
    html笔记
    好用软件
    谷歌插件
    vue笔记
    js笔记
    数组去重
    css全局样式
    css笔记
    vscod插件
  • 原文地址:https://www.cnblogs.com/cl1024cl/p/6205364.html
Copyright © 2011-2022 走看看