Apache Pig学习笔记(二)

主要整理了一下,pig里面的一些关键词的含义和用法,pig虽然是一种以数据流处理为核心的框架,但数据库的大部分关键词和操作,在pig里面基本上都能找到对应的函数,非常灵活与简洁,春节前的最后一篇文章了,祝大家春节快乐! 1,pig里所有的保留关键字: -- A assert, and, any, all, arrange, as, asc, AVG -- B bag, BinStorage, by, bytearray, BIGINTEGER, BIGDECIMAL -- C cache, CASE, cat, cd, chararray, cogroup, CONCAT, copyFromLocal, copyToLocal, COUNT, cp, cross -- D datetime, %declare, %default, define, dense, desc, describe, DIFF, distinct, double, du, dump -- E e, E, eval, exec, explain -- F f, F, filter, flatten, float, foreach, full -- G generate, group -- H help -- I if, illustrate, import, inner, input, int, into, is -- J join -- K kill -- L l, L, left, limit, load, long, ls -- M map, matches, MAX, MIN, mkdir, mv -- N not, null -- O onschema, or, order, outer, output -- P parallel, pig, PigDump, PigStorage, pwd -- Q quit -- R register, returns, right, rm, rmf, rollup, run -- S sample, set, ship, SIZE, split, stderr, stdin, stdout, store, stream, SUM -- T TextLoader, TOKENIZE, through, tuple -- U union, using -- V, W, X, Y, Z Void 2,关于大小写敏感,别名大小写敏感,关键字大小写都可以 例如,load,group,foreach与LOAD,GROUP,FOREACH是等价的 3,别名定义(首位字符必须为字母,其他位置可以是字母,数字,下划线中的任意一个) 4,集合类型 Bags ,类似table,可以包含多个row Tuples,类似一行行row,可以有多个field Fields,具体的数据 5,列名引用,在关系数据库中我们可以使用列名来定位到某一行数据的某个字段的值,在JDBC中,我们既可以通过列名引用,也可以通过索引下标引用,在pig里,也支持这两种用法,下标引用需要加上$0,$1这样的数字标识。 6,数据类型 (基本类型) Int:有符号32位整数 Long:有符号64位整数 Float:32位单精度 Double:64位单精度 Chararray:Java里面的字符串类型,必须是UTF-8编码 Bytearray:blob字节类型 Boolean:布尔类型 Datetime:日期类型 Biginteger:Java Bigingteger Bigdecimal:Java BigDecimal (集合类型) Tuple:一个有序的字段值集合,类似Java里面的List Bag:Tuple的集合,类似Java里面的Collection集合超级接口 Map:Java里面的Map,K和V,直接使用#号分开,引用时需要加上#号 7,运算符: (1) 比较运算符==,!=,<,>,>=,<= (2) 比较运算符matches,适合字符串,支持正则 (3) 算术运算符+,-,*,/,%,?:,CASE (4) Null运算符is not null ,is null (5) 集合类型引用符号tuple(.),map(#) (6) 关系运算符cogroup,group,join (7) 函数count_star,sum,min,max,count,avg,concat,size 8, 多数据源join时,别名区分,使用A::name,B::name 9, fallten可以将一个集合类型,或嵌套的类型,给扁平化成一行,看下面例子 B={(a,b,c),(b,b,c)} FLATTEN(B)之后 a,b,c,b,b,c就成为一行数据了 10,cogroup,多表分组使用 11,cross,两个数据源链接,会产生笛卡尔集 12,distinct,去重,与关系型数据库不同的是,不能对单个field去重,必须是一个row,如果你想对单filed去重,那么就需要先把这个filed,单独提取出来,然后在distinct 13,filter,过滤,类似数据库的where条件,返回一个boolean值。 14,foreach,迭代,抽取一列,或几列的数据, 15,group,分组,类似数据库的group 16,partition by,同等hadoop中Partition组件 17,join,分内外连接,与关系型数据库类似,在hadoop中又分不同的连接方式:复制连接,合并连接,skewed连接等 18,limit,限制结果集返回行数,与mysql中的limit关键字类似 19,load,pig特有关键词,负责从一个指定的路径加载数据源,路径可以使用通配符与hadoop的路径通配符保持一致 20,mapreduce,在pig中,以MR的方式执行一个jar包 21,order by 与关系型数据库的order类似 22,rank,给一个集合,生成序号,类似for循环时的索引自增 23,sample,采样器,能从指定的数据集中随机抽取指定的记录数 24,split,可以按条件拆分一个大的数据集,生成几个不同的小数据集 25,store,pig里面的存储结果的函数,可以将一个集合以指定的存储方式,存储到指定的地方 26,stream,提供了以流的方式可以在pig脚本中,与其他的编程语言交互,比如将pig处理的中间结果,传给python,perl,或者shell等等 27,union,类似数据的union,合并两个结果集为一个结果集 28,register,UDF中,使用此关键词注册我们的组件,可能是一个jar包,也可能是一个python文件 29,define,给UDF的引用定义一个别名 30,import,在一个pig脚本中,使用imprt关键词引入另外一个pig脚本

原文发布于微信公众号 - 我是攻城师(woshigcs)

原文发表时间:2015-02-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Jackson0714

PHP内核之旅-3.变量

2996
来自专栏aCloudDeveloper

Java中Properties类的操作

    知识学而不用,就等于没用,到真正用到的时候还得重新再学。最近在看几款开源模拟器的源码,里面涉及到了很多关于Properties类的引用,由于Java已经...

21610
来自专栏Android开发实战

设计模式-单例模式

单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。

833
来自专栏数据结构与算法

cf580E. Kefa and Watch(线段树维护字符串hash)

首先有个神仙结论:若询问区间为$(l, r, d)$,则只需判断$(l + d, r)$和$(l, r - d )$是否相同

1191
来自专栏开发与安全

《linux c 编程一站式学习》课后部分习题解答

1、假设变量x和n是两个正整数,我们知道x/n这个表达式的结果要取Floor,例如x是17,n是4,则结果是4。如果希望结果取Ceiling应该怎么写表达式呢?...

4426
来自专栏小小挖掘机

来学习几个简单的Hive函数啦

咳咳,今天来介绍一下几个Hive函数吧,先放一张我登哥划水的照片,希望大家也做一只自由的鱼儿,在知识的海洋里游呀游,嘻嘻! ? 今天我们来介绍几个Hive常用的...

4364
来自专栏王硕

原 PostgreSQL的系统函数分析记录

1313
来自专栏Java技术栈

Java:关于main方法的10道面试题

大年初三好,春节第三天了。感觉假期过得好快,东西也丢得快。 假期吃喝玩乐之余也来温故一下Java知识,下面给大家整理了10道Java main方法的经典面试题,...

36211
来自专栏博客园

Core官方DI解析(4)--CallSiteRuntimeResolver

这两个类都在其CallSiteVisitor<TArgument, TResult>基类中

863
来自专栏刘望舒

Kotlin下的5种单例模式

4581

扫码关注云+社区

领取腾讯云代金券