`
qindongliang1922
  • 浏览: 2184590 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7265517b-f87e-3137-b62c-5c6e30e26109
证道Lucene4
浏览量:117550
097be4a0-491e-39c0-89ff-3456fadf8262
证道Hadoop
浏览量:125937
41c37529-f6d8-32e4-8563-3b42b2712a50
证道shell编程
浏览量:59934
43832365-bc15-3f5d-b3cd-c9161722a70c
ELK修真
浏览量:71309
社区版块
存档分类
最新评论

Apache Pig学习笔记之内置函数(三)

    博客分类:
  • Pig
阅读更多


1 简介
Pig附带了一些的内置函数,这些函数包括(转换函数,加载和存储函数,数学函数,字符串函数,以及包和元组函数),在Pig里面主要有二种函数分别是内置函数和自定义的UDF函数,他们区别在于
第一:内置函数不需要被注册,因为Pig本身知道他们在哪里
第二:内置函数不需要定义引用路径,因为Pig本身知道在哪里能找到他们
2 动态调用
Java里面已经存在大量的工具类库,那么在Pig里面,我们也可以通过反射来灵活的定义某一类你需要用到的函数,例如下面的例子

当前,动态调用可以被用于任何的静态函数:

 可以接收无参数或接收一些string,int,long,double,float,arrays这几种类型
 返回类型包括字符串,int,long,double,float

3 Eval函数
3.1 Avg 用法:avg(price) 计算单列值的平均数,忽略Null值,在使用Group All或Group单列后可使用。
3.2 Concat 用法:contact(expression1,expression2)拼接两个字段的值为一个字符串,如果其中一个为Null,则结果用Null
3.3 Count 用法:count(expression) 统计在一个bag中所有元素的数量,不包含null值统计,同时需要group前提支持。
3.4 Count_Star 用法和count类型,不同之处在于Count_Star包含null统计
3.5 Diff 用法:diff(expression1,expression2),比较一个tuple中的两个fields集合的差异性,通linux或python里面的diff函数类似

3.6 isEmpty 用法:IsEmpty(expression1)判断一个bag或map是否为空(没有数据),可以使用在filter过滤数据中
3.7 max 用法:max(expression)计算单列中最大的数值值,或者字符串的最大值(字典排序),同count一样需要Group支持
3.8 min 用法:min(expression)计算单列中最小的数值值,或者字符串的最小值(字典排序),同count一样需要Group支持
3.9 pluckTuple 用法: ,给指定关系加一个字符串前缀

3.10 Size 用法:size(expression)计算任何pig字符串的大小长度,或者集合类型的的长度。
3.11 Subtract 用法:subtract(expression1,expression2),对两个bag里面的tupe做差值操作,并返回差值部分一个新的bag

3.12 Sum 用法sum(expression)对某列求和,同聚合函数都一样需要提前group。
3.13 Tokenize 用法 tokenize(expression,‘field_delimiter’)按指定分隔符拆分一句话,然后转成一系列的words,可以用来做wordcount的经典函数。
4 加载/存储函数
Load和store函数决定了数据怎样加载到pig里和怎么从pig里输出,pig提供了一系列load和store函数,当然你可以通过udf函数重写你自己定制的加载和存储函数。
4.1 处理压缩
压缩的支持是通过pig的加载和存储函数来决定的
PigStorage和TextLoader支持gzip和bzip压缩包括读和写,BinStorgae不支持压缩,为了处理gzip压缩的文件,输入和输出的文件必须要有一个.gz扩展后缀。 Gzip文件不能被切分为多个map,这意味着map的数量,就等于文件的数量。

为了处理bzip 的压缩文件,输入输出的文件也必须有一个bz或bz2的后缀名,bzip压缩可以被切分为多个map块执行。

Pig能够正确的读取和写入压缩文件,只要原始文件是正确的压缩方式,如果仅仅修改后缀或起个后缀名为.gz或.bz那么是不正确的方式,例子:



4.2 BinSotrage
能够加载和存储机器可读的格式,很少有人使用,而且有一些类型丢失bug,所以在这里就不详细介绍了
4.3 JsonLoader,JsonStorage
加载和存储json的数据的load和store函数
4.4 PigDump
存储数据使用UDF-8格式
4.5 PigStorage
加载和存储结构化的文件数据
用法: PigStorage(field_delimiter,options)
参数1:加载的分割符,必须使用单引号引起来
参数2:扩展项,使用比较少,不详细说明
此函数是pig默认的加载和存储函数,支持压缩,输入文件可以是一个文件,一个目录,或者一组目录。
复合数据类型的在PigStorage里面的存储和展示方式:
Tuple:(item1,item2,item3),空值也是有效的值存储为:()
Bag:{code},{(tuple)},空值有效:{}
Map:[key1#value,key2#value],空值有效[]


4.6 TextLoader
加载非结构化数的据,使用UTF-8格式,每个产生的结果的tuple包括一个单个字段,和一行输入的文本,TextLoader也支持压缩,但是会受到一定限制,此外 TextLoader不支持存储数据。

4.7 HbaseStorage
加载和存储数据来自Hbase表
用法同PigStorage类似,需要指定分割符,和加载选项HbaseStorage(’columns’,’option’)
4.8 AvroStorage
加载和存储数据来自Avro文件
4.9 TrevniStorage
加载和存储来自trevniStorage的文件
5 数学函数
5.1 ABC 绝对值
5.2 ACOS 反余弦
5.3 ASIN 反正弦
5.4 ATAN 反正切
5.5 CBRT 立方根
5.6 CEIL 近1法取整数
5.7 COS 余弦
5.8 COSH 双曲余弦
5.9 EXP 指数
5.10 FLOOR 四舍五入取整
5.11 LOG 基于e的对数
5.12 LOG10 以10为底的对数
5.13 RANDOM 生成一个介于0.0到1.0之间的小数
5.14 ROUND 返回最近的整数
5.15 SIN 正弦
5.16 SINH 双曲正弦
5.17 SQRT 平方根
5.18 TAN 正切
5.19 TANH 双曲正切
6 字符串函数
6.1 EndSwith   用法:EndsWith(“foobar”,”bar”)返回true,以某个字符串结尾
6.2 EqualsIgnoreCase 比较两个字符串忽略大小写
6.3 IndexOf 返回要查询的字符串在目标源中的首个位置索引
6.4 Last_Index_of返回要查询的字符串在目标源中的最后一个位置索引
6.5 Lower 转小写
6.6 Ltrim 忽略左边空格
6.7 Regex_Extract 正则提取需要返回的字符串
用法:REGEX_EXTRACT (string, regex, index),
第一参数:原始字符串
第二参数:正则表达式
第三参数:返回数据的索引下标
例子如下:
我们想要从192.168.1.5:8080中,得到ip地址,该怎么写,非常简单:
REGEX_EXTRACT (“192.168.1.5:8080”, “(.*):(.*)”, 1),即可


6.8 Regex_Extract_All
返回所有的以指定正则表达式拆分后的tuple元组:

将会返回类似一个数组,里面装了以冒号分开的二个元素
6.9 Replace
替换一个存在的字符串成一个新的字符串
用法:REPLACE(string, 'regExp', 'newChar');
6.10 Rtrim
忽略右边空格
6.11 StartsWith
查询以某个字符串开头的函数
6.12 StrSplit
用法:STRSPLIT(string, regex, limit)
Limit代表返回元素的个数

6.13 SubString
从一个字符串中截取一个新的字符串
用法:SUBSTRING(string, startIndex, stopIndex)
通java里的字符串截取类似
6.14 Trim
忽略左右空格
6.15 Ucfirst
将每个字符串的首个字母,转换为大写
6.16 Upper
转换为大写
7 日期函数
7.1 AddDuration  指定日期上新加一个日期
7.2 CurrentTime 返回当前的时间戳
7.3 DaysBetween 返回两个日期之间的天数
7.4 GetDay 从一个日期中获取当前的日期天数
7.5 GetHour 从一个日期中获取当前的小时数
7.6 GetMilliSecond 从一个日期中获取毫秒
7.7 GetMinute从一个日期中获取分钟
7.8 GetMonth 从一个日期中获取月份
7.9 GetSecond 从一个日期中获取秒
7.10 GetWeek 从一个日期中获取周
7.11 GetWeekYear 返回一周年的日期
7.12 GetYear 从一个日期中获取年份
7.13 HoursBetween 返回两个日期间的小时数
7.14 MilliSecondsBetween 返回两个日期间的毫秒数
7.15 MinutesBetween 返回两个日期间的分钟数
7.16 MonthsBetween 返回两个日期间的月份数量
7.17 SecondsBetween 返回两个日期间的秒数
7.18 SubtractDuration 返回一个日期对象减去指定的日期后的时间
7.19 ToDate 根据参数返回一个DateTime对象
7.20 ToMilliSeconds 返回当前的毫秒数
7.21 ToString 转换日期为字符串
7.22 ToUnixTime 转换为unix格式的时间
7.23 WeeksBetween 返回两个日期直接的周数
7.24 YearsBetween 返回两个日期间的年数
8 Tuple,Bag,Map 函数
8.1 TOTUPLE
转换一个或多个字段,为一个tuple

8.2 TOBAG
转换一个或多个表达式为bag

8.3 TOMAP
转为K/V形式进入一个map集合

8.4 TOP
返回前n个元组包里面的元组,例子:


想了解更多有关电商互联网公司的搜索技术和大数据技术的使用,请欢迎扫码关注微信公众号:我是攻城师(woshigcs)
本公众号的内容是有关搜索和大数据技术和互联网等方面内容的分享,也是一个温馨的技术互动交流的小家园,有什么问题随时都可以留言,欢迎大家来访!





1
0
分享到:
评论

相关推荐

    pig-0.16.0.tar安装包

    【标题】"pig-0.16.0.tar安装包" 涉及的主要知识点是Apache Pig的安装和使用,这是一个基于Hadoop的数据流编程平台,用于处理大规模数据集。Pig Latin是Pig的编程语言,它允许用户编写复杂的数据处理任务,而无需...

    学习笔记zzzzz.zip

    压缩包内的“学习笔记”可能包括以下内容:Hadoop安装与配置教程,HDFS的基本操作和管理,MapReduce编程模型的实例解析,Hadoop集群的优化策略,以及YARN、HBase、Hive和Pig的使用方法等。这些笔记可以帮助读者深入...

    大数据学习笔记文档.rar

    《大数据学习笔记文档》 大数据领域是信息技术的热门方向,涵盖了多个关键技术,如Linux、Kafka、Python、Hadoop和Scala等。以下是对这些技术的详细介绍: **Linux**:作为大数据处理的基础平台,Linux因其开源、...

    机器学习笔记

    根据所提供的文件信息,该份文档是一份机器学习的笔记,涵盖了众多机器学习领域的基本概念和技术。下面,我们将详细解读文件中所提到的机器学习知识点: 1. CS229是斯坦福大学开设的一门机器学习课程编号,由Andrew...

    Hadoop学习笔记

    Hadoop,作为大数据处理的核心组件之一,是Apache软件基金会开发的开源框架,专门针对大规模数据集进行分布式计算。这个框架基于Java语言实现,它设计的目标是高容错性、可扩展性和高效的数据处理能力。Hadoop的诞生...

    hive学习笔记

    Hive是Apache Hadoop生态系统中的一个数据仓库工具,它允许用户使用SQL(称为HQL,Hive查询语言)对大规模分布式存储的数据进行分析。Hive最初由Facebook开发,旨在简化大数据处理,使得非编程背景的用户也能进行...

    hadoop常识讲义+笔记.zip

    Hadoop是大数据处理领域的一个核心框架,由Apache软件基金会维护,它主要设计用于处理和存储海量数据。这个压缩包文件“hadoop常识讲义+笔记.zip”很可能包含了关于Hadoop的基本概念、工作原理以及实际应用的详细...

    传智播客hadoop资料文档和笔记

    《传智播客Hadoop资料文档和笔记》是一份针对Hadoop技术的综合学习资源,由知名教育机构传智播客提供。这份资料涵盖了Hadoop生态系统的各个方面,旨在帮助学习者深入理解并掌握这一分布式计算框架的核心概念和技术。...

    Hadoop大数据开发教程笔记软件.zip

    压缩包“Hadoop大数据开发教程笔记软件.zip”包含了一份详实的Hadoop学习资源,特别是针对基于Hadoop的大数据开发基础进行讲解。 Hadoop是一个开源框架,由Apache软件基金会维护,它设计用于处理和存储大量数据。其...

    hadoop_note.zip

    这个名为“hadoop_note.zip”的压缩包,很可能是包含了一份关于Hadoop学习和实践的笔记,其中可能涉及了Hadoop的核心概念、安装配置、数据存储以及Python在Hadoop生态系统中的应用。 一、Hadoop核心组件 1. HDFS...

    hadoop学习资料(一)

    Hadoop学习资料(一)包含了从第一周到第十六周的课程笔记,是作者在深入学习Hadoop过程中积累的知识结晶。这份资料对于那些想要踏入大数据处理领域的初学者或者是正在提升Hadoop技能的人来说,无疑是一份宝贵的资源...

    hadoop文档

    - **hadoop笔记.ppt**:这可能是一个PPT形式的学习笔记,整理了Hadoop的关键概念、核心组件的工作原理以及一些实例分析。 总之,Hadoop作为一个强大的分布式计算框架,对于大数据处理和分析有着至关重要的作用。...

    Hadoop开发者第一期-带书签文字版.pdf

    《Hadoop开发者第一期-带书签文字版》是一份专为Hadoop初学者和开发者设计的高清版学习资料,包含完整的目录结构和便于查阅的书签功能,且所有文字内容均可以复制,极大地提升了学习和参考的便利性。这份资料深入浅...

    hadoop源码归档.zip

    压缩包内的文件主要是法律学习资料,如法考笔记、刑法和民诉的思维导图、讲义等,而不是与Hadoop相关的源代码或IT技术文档。因此,我无法根据这些信息生成关于Hadoop的知识点。 如果您的目标是获取Hadoop的相关知识...

    尚硅谷大数据视频_Hive视频教程

    9. **Hive与外部工具集成**:学习如何将Hive与其他大数据工具,如Pig、Spark、Impala等集成,以实现更高效的数据处理流程。 10. **实际案例分析**:通过具体的业务场景,实践使用Hive解决大数据问题,提升实际操作...

    bigdata:bigdata框架使用演示!

    在Scala中编写Spark程序,可以利用其强大的函数式编程特性,提高代码的可读性和可维护性。 接下来,我们看到的压缩包子文件"bigdata-master"可能是一个Git仓库的名字,这通常包含了项目的源代码、配置文件、文档等...

    ws.hadoop:学习hadoop

    【描述】"ws.hadoop 学习hadoop"进一步强调了学习的意图,暗示可能包含教程、项目实践或笔记等内容。"ws"可能是工作空间或者项目的简称,"master"通常代表主分支或主要版本,暗示这是一个开源项目的主线代码库。 ...

    coursera:在coursera平台上完成的课程练习

    在本压缩包文件中,包含了三个不同主题的学习资料,分别是关于大数据算法、面向模式的软件架构(特别是针对Android移动服务编程)以及云服务的相关课程。这些主题都是IT领域中的核心知识点,下面将对这些主题进行...

Global site tag (gtag.js) - Google Analytics