zoukankan      html  css  js  c++  java
  • pig的内置函数小总结(不全)

    piggybank里面有非常多函数,能够用register和define调用。也能够用java仿照piggybank自行开发。

    比方读sequence二进制文件,能够用piggybank里面函数SequenceFileLoader,也能够自行开发函数。

    --REGISTER piggybank.jar;
    REGISTER wizad-etl-udf-0.1.jar;


    --DEFINE SequenceFileLoader org.apache.pig.piggybank.storage.SequenceFileLoader();
    DEFINE SequenceFileLoader com.etl.pig.SequenceFileCSVLoader();

    --origin_cleaned_data = LOAD '$Cleaned_Log' USING PigStorage(',')
    origin_cleaned_data = LOAD '$Cleaned_Log' USING SequenceFileLoader



    下面是pig内置函数,可直接使用:


    load函数:pigstorage,hbasestorage

      TestLoader按行读取text文件,每行做作为一个tuple(是一个chararay类型的字段)


    存储函数:PigStorage(hdfs),HBaseStorage(hbase)


    内置数学函数:
    ABS()绝对值,
    TAN()正切
    ATAN()反正切
    TANH()双曲正切


    SQRT()平方根
    CBRT()立方根


    SIN正弦
    SINH双曲正弦
    COS()余弦
    ACOS()反余弦值
    COSH()双曲余弦
    EXP():e的幂次方(e为底的指数函数)
    LOG()自然对数
    LOG10():10为底的对数函数


    ROUND:四舍五入取值
    CEIL()向上取整


    FLOOR(double) 小于等于某表达式的最大整数






    注意:{(int)}是包括int类型字段的tupe的bag。
    内置聚合函数:
    AVG({(int)}):全部值平均值,null忽略。
    AVG({(long)}):全部值平均值,null忽略。
    AVG({(float)}):全部值平均值,null忽略。
    AVG({(double)}):全部值平均值,null忽略。
    AVG({(bytearray)}):全部bytearray值转化为double类型后的平均值,null忽略。


    COUNT
    COUNT_STAR:相当于sql中的count(*)
    SUM({(int)}):还有SUM({(float)})。。。
    SUM({(bytearray)}):bytearray类型转double后求和,null忽略。
    MAX()找最大
    MIN()找最小


    内置chararray和bytearray的UDF
    CONCAT(chararray a, chararray b):连接字符串字段a,b
    CONCAT(bytearray a, bytearray b):连接字符串字段a,b


    字符查找,返回查找的首位置与末位置。
    INDEX_OF(chararray source,chararray search):在source字段中,查找search字段,返回search出现的第一个位置,无则返回-1
    如:SPLIT ios INTO ios6 IF (INDEXOF(os_version,'7')!=0),ios7 IF INDEXOF(os_version,'7')==0;


    LAST_INDEX_OF(chararray source,chararray search):在source中查找search字段,返回search最后一个字符出现的位置。无则返回-1


    LCFIRST(chararray):第一字符转小写
    UCFISRT(chararray input):第一个字符转大写
    LOWER(chararray):全部字符转小写
    UPPER(chararray):全部字符转大写


    REGEX_EXTRACT(chararray source, chararray regex, int n):regex是正則表達式,在source中全部匹配regex的字符串(chararray),返回第n个(n从1開始);无则返回null

    实例:allAdId =FOREACH allRow GENERATE REGEX_EXTRACT((chararray)$3,'(.*) (.*)',1) AS time,REGEX_EXTRACT((chararray)$0,'(.*)_(.*)',1) AS adn,$6 AS ad_id;


    (chararray)REGEX_EXTRACT_ALL(chararray source, chararray regex):在source中找到匹配regex的全部部分作为一个tuple返回(chararray),没有则返回null。


    chararry REPLACE(chararry source, chararray toReplace, chararray newValue):在source字段中,用newValue去替换全部的toReplace字段。


    long SIZE(chararray input):返回input中字符的个数




    (chararray) STRSPLIT(chararray source):将source字符串按空格分隔,返回包括一个字段的tuple,如(aa bb cc)
    (chararray) STRSPLIT(chararray source, chararray regex):将source字符串按正則表達式regex分隔,返回包括一个字段的tuple
    (chararray) STRSPLIT(chararray source, chararray regex, int maxsplits):将source字符串按正則表達式regex分隔,超过最大分隔数maxsplits后的部分丢弃,仅仅保留前面部分,返回包括一个字段的tuple


    SUBSTRING(chararray source,int start, int end):提取source的子串,位置从start到end(不包括end位置上的内容,仅仅留end之前的)。起始位置从0開始,不是从1。输入字符串小于start会报错。


    {(chararray)} TOKENIZE(chararray source):按空格切割source字符串成多个部分,分别存入tuple,总体作为一个bag返回。


    chararray TRIM(chararray input):去字符串前面和后面的全部空格


    还有非常多。。
    RANDOM():0到1的随机数

    判空IsEmpty(bag)和IsEmpty(tuple)




  • 相关阅读:
    创业日志N,一听到别人说创业我就怕
    《创业维艰分享之五》所有得,有所乐,日事日清,循序渐进。
    创业维艰--分享技术人做产品与做市场的一些经验
    创业维艰--最艰难的时候
    angular js 在ie11 下的get请求缓存问题的解决办法
    《创业维艰-分享创业中遇到的困难之二》----破局
    xwalk_core_library-15.44.384 .13.aar 百度云分享
    linux常用命令
    Merge into 用法
    多线程的并发控制
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/4204681.html
Copyright © 2011-2022 走看看