博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
pig的内置函数小总结(不全)
阅读量:6612 次
发布时间:2019-06-24

本文共 2867 字,大约阅读时间需要 9 分钟。

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)

转载地址:http://xgxso.baihongyu.com/

你可能感兴趣的文章
《Gamestorming》读书笔记
查看>>
域名和网址链接被微信浏览器拦截怎么办 微信屏蔽网址打开如何解决
查看>>
使用SQL Server Analysis Services数据挖掘的关联规则实现商品推荐功能(二)
查看>>
ubuntu下安装jdk
查看>>
C/S与B/S架构比较
查看>>
XML学习总结(2)——XML简单介绍
查看>>
python操作数据库-安装
查看>>
vs.net删除转移文件
查看>>
你真的了解interface和内部类么
查看>>
java中常用的类型转换
查看>>
【log4j】使用Log4j?,slf4j更轻巧高效
查看>>
kuangbin专题七 POJ3264 Balanced Lineup (线段树最大最小)
查看>>
JS动画效果链接汇总
查看>>
父类转为子类涉及到的安全问题
查看>>
网络流,流水线模拟
查看>>
知识点笔记
查看>>
陈云川的OPENLDAP系列
查看>>
django 模型-----自连接
查看>>
P1197 [JSOI2008]星球大战
查看>>
urllib模块
查看>>