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)

pig的内置函数小总结(不全)相关推荐

  1. 微信小程序判断服务器返回值,让微信小程序内置函数返回promise的方法

    Promise API const promisic = function (func) { return function (params = {}) { return new Promise((r ...

  2. python 作用域从大到小排序_Python 内置函数、作用域、闭包、递归

    一.内置函数如何使用 help()一下: 如想看min()咋用?在shell中:help(min) 二.部分内置函数 (一).排序:sorted() li = [(1, 2, 3, 4), (7, 8 ...

  3. 轩小陌的Python笔记-day13 匿名函数、生成器、内置函数、推导式

    day13 内置函数和推导式 今日概要: 匿名函数 生成器 内置函数 附加:推导式,属于数据类型的知识,内部的高级的用法会涉及到[生成器]和[函数]的内容. 1. 匿名函数 传统的函数的定义包括了:函 ...

  4. python内置函数返回序列中最大元素_Python 内置函数 ____________ 用来返回序列中的最大元素。_学小易找答案...

    [单选题]5. an official group of people who have joined together for a particular purpose [单选题]Excel 201 ...

  5. python内置函数用来返回数值型序列中所有元素之和_语句x = 3==3, 5执行结束后,变量x的值为_学小易找答案...

    [判断题]不可以在同一台计算机上安装多个Python版本. [填空题]表达式[1, 2, 3]*3的执行结果为 [填空题]使用切片操作在列表对象x的开始处增加一个元素3的代码为 [填空题]Python ...

  6. python中求包含5的数_Python 内置函数 ( ) 可以返回列表、元组、字典、集合、字符串以及 range 对象中元素个数。_学小易找答案...

    [简答题]实例1:求两数相除的结果. 先后输入2个数据,计算第一个数除以第二个数的结果. 要求能够处理输入数据为非数字.除数为零.文件末尾EndOfFile 和用户使用Ctrl + C 命令终止程序等 ...

  7. python字符串(连载二)|字符串内置函数原来还可以这么玩!

    此系列连载涵盖 字符串,列表,字典,元组,集合等内置函数的基本用法.每次更新十个函数的基本用法.(建议收藏哈) 有福利哦,小编整理了些python学习资料,需要的自行领取!获取方式在文末哈! 目录: ...

  8. Hive内置函数与常用函数汇总

    目录 Hive内置函数汇总 字符函数(字符串操作) 数学函数 集合函数 类型转换函数 日期函数 条件函数 聚合函数 表生成函数 辅助功能类函数 数据屏蔽函数(从Hive 2.1.0开始) Hive常用 ...

  9. 第二十五章 面向对象------封装、内置函数、反射、动态导入

    1.封装 什么是封装? 1.对外部隐藏内部的属性,以及实现细节,给外部提供使用的接口 注意:封装有隐藏的意思,但不是单纯的隐藏 学习封装的目的:就是为了能够限制外界对内部数据的访问 python中属性 ...

最新文章

  1. BZOJ 1022 [SHOI2008]小约翰的游戏John AntiNim游戏
  2. 雪城大学信息安全讲义 3.3 提升 Set-UID 程序的安全性
  3. Oracle 9i 升级至Oracle10g数据库最好的方法
  4. Kubernetes Service 对象的使用
  5. Python高级运维开发面授课程本周末隆重开课
  6. 在GLSurfaceView上添加Layout控件(android)
  7. 【机器学习基础】关于Scikit-Learn,你不一定知道的10件事
  8. 安装不文件不完全_冬日不偷懒 跑步机不完全使用指南
  9. boost::histogram::axis::transform用法的测试程序
  10. 艾伦图灵_Java英雄:丹·艾伦
  11. LeetCode8——String to Integer (atoi)(自己编写atoi函数)
  12. linux连不上网 ens33,如何解决Linux 系统下 ifconfig 命令无网络接口 ens33
  13. [渝粤教育] 中国地质大学 中外美术史 复习题
  14. 图像处理黑科技—破解文档识别难题(PS检测、弯曲拉平、切边切片、摩尔纹)
  15. SAP计划策略40测试
  16. C#修改Windows系统时间
  17. 软件或者网站的版权声明中的两个时间是什么意思?该如何正确书写?
  18. MySQL学习笔记第二周(一)
  19. 高压开关柜无线测温系统(高压开关柜在线监测系统应用案例)
  20. 就在明天 用友企业数智化财务峰会落地广州,聚焦实现业财合一新价值

热门文章

  1. OpenCV学习笔记(六)——感兴趣区域ROI(浅拷贝与深拷贝的区别)
  2. PDF中图片表格可以转成Excel表格吗?
  3. petalinux 编译,源码编译
  4. 如果需要你来测试淘宝的购物车,你会如何设计测试用例,需要从哪些方面来考虑
  5. ar面部识别_世界首款面部识别App通过智能手机识别 加入增强现实AR功能
  6. 数据库视图数据是否可以直接删除
  7. 003、torchserve 调用LSTM模型预测
  8. 初学者应该怎么快速的学习Java编程?
  9. (附源码)ssm中小企业仓库管理信息系统的开发与实现 毕业设计150916
  10. 使用pytorch搭建MLP多层感知器分类网络判断LOL比赛胜负