Apache Pig学习笔记(二)
主要整理了一下,pig里面的一些关键词的含义和用法,pig虽然是一种以数据流处理为核心的框架,但数据库的大部分关键词和操作,在pig里面基本上都能找到对应的函数,非常灵活与简洁,春节前的最后一篇文章了,祝大家春节快乐!
1,保留关键字:
-- 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脚本
Apache Pig学习笔记(二)的更多相关文章
- Apache Ignite 学习笔记(二): Ignite Java Thin Client
前一篇文章,我们介绍了如何安装部署Ignite集群,并且尝试了用REST和SQL客户端连接集群进行了缓存和数据库的操作.现在我们就来写点代码,用Ignite的Java thin client来连接集群 ...
- JDBC学习笔记二
JDBC学习笔记二 4.execute()方法执行SQL语句 execute几乎可以执行任何SQL语句,当execute执行过SQL语句之后会返回一个布尔类型的值,代表是否返回了ResultSet对象 ...
- ZooKeeper学习笔记二:API基本使用
Grey ZooKeeper学习笔记二:API基本使用 准备工作 搭建一个zk集群,参考ZooKeeper学习笔记一:集群搭建. 确保项目可以访问集群的每个节点 新建一个基于jdk1.8的maven项 ...
- WPF的Binding学习笔记(二)
原文: http://www.cnblogs.com/pasoraku/archive/2012/10/25/2738428.htmlWPF的Binding学习笔记(二) 上次学了点点Binding的 ...
- AJax 学习笔记二(onreadystatechange的作用)
AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...
- [Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计
源地址:http://bbs.9miao.com/thread-44603-1-1.html 在此补充一下Socket的验证机制:socket登陆验证.会采用session会话超时的机制做心跳接口验证 ...
- JMX学习笔记(二)-Notification
Notification通知,也可理解为消息,有通知,必然有发送通知的广播,JMX这里采用了一种订阅的方式,类似于观察者模式,注册一个观察者到广播里,当有通知时,广播通过调用观察者,逐一通知. 这里写 ...
- java之jvm学习笔记二(类装载器的体系结构)
java的class只在需要的时候才内转载入内存,并由java虚拟机的执行引擎来执行,而执行引擎从总的来说主要的执行方式分为四种, 第一种,一次性解释代码,也就是当字节码转载到内存后,每次需要都会重新 ...
- Java IO学习笔记二
Java IO学习笔记二 流的概念 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 程序中的输入输 ...
随机推荐
- swing 托盘
直接上方法, 不过有些问题要注意,最后会说明! private void systemTray() { if (SystemTray.isSupported()) { // 判断系统是否支持托盘功能. ...
- Windows系统查看xxx.dll、xxx.lib文件的导出函数、依赖文件等信息的方法
1.查看xxx.dll或xxx.exe文件的导出函数.依赖文件等信息,使用Depends软件即可. 2.查看xxx.lib文件的导出函数.依赖文件等信息,使用Visual Studio附带工具dump ...
- PHP微信公众号支付弹出“NaN:undefined”解决方法
最近研究php微信支付开发,从微信官方下载了微信支付的demo后,测试时总是弹出NaN:Undefined这样的错误提示.不过这个并不影响支付的操作,支付成功后依然可以正常获取到支付状态,并进行跳转. ...
- windows安装cygwin实现gcc/g++/linux操作等功能
首先安装cygwin:参照下列博客去cygwin官网下载即可.安装过程中记得勾选需要的安装包,比如gcc/gdb https://blog.csdn.net/qilvmilv/article/deta ...
- windows 嵌入控制台
{ 实际非常简单 需要控制台的hwnd 和 hdc 能获取控制台的hwnd 那hdc 就出来了 有了hdc 还有什么不能干的呢?? 如果会win32 窗口编程的就知道hdc,是一个让人流口水的类型 } ...
- P2528 [SHOI2001]排序工作量之新任务
P2528 [SHOI2001]排序工作量之新任务 题目描述 假设我们将序列中第i件物品的参数定义为Ai,那么排序就是指将A1,…,An从小到大排序.若i<j且Ai>Aj,则<i ...
- iServer添加Oracle Plus数据源、服务发布的问题
今天在将以Oracle Plus为数据源的工作空间发布成服务时,发现服务发布完后,看不见任何数据.最后发现,还需要在iserver服务器上安装oracle客户端才行.整理如下: 一.创建空间数据库账户 ...
- 在select标签中添加a标签
<!--第一个选项不能写连接--> <select id="" onchange="window.location=this.value"&g ...
- “fixed+relative≈≈absolute”——对BFC的再次思考
好久没写博客了,刚好今天跨年夜没约到什么妹子,在家宅着不如写点东西好了. 需求 昨天晚上,给公司年会做一个移动端的投票页面,遇到一个UI优化的问题: · 正文内容少于一屏时,投票提交按钮固定显示在页面 ...
- 第二天:数值与字符串、列表list
数值 1. 声明变量 age = 20 f = 3.14 #浮点型 f = 0.3 f = .3 2.表达式 主要是做一些简单的加减乘除运算,直接出结果 1.1 + 2.2 2.2 + 3.0 3.1 ...