Pig语言基础-【持续更新中】
A = LOAD 'a.txt' AS (col1:chararray, col2:int);
B = GROUP A BY (col1);
DUMP A;
DUMP B;
C=FOREACH B GENERATE group, AVG(A.col2);
关系操作
LOAD
将数据从文件系统中载入。
LOAD 'data' [USING function] [AS schema];
A = LOAD 'data' AS (f1:int, f2:int);
DISTINCT
alias = DISTINCT alias [PARTITION BY partitioner] [PARALLEL n];
X = DISTINCT A
将包/关系A中重复记录去掉,并赋值给新的包/关系X。
多维度中,计算几个维度组合下的不重复记录数。
A =LOAD'input';
STORE A INTO'output'USING com.twitter.elephantbird.pig.store.LzoPigStorage();
set mapred.output.compression.codec 'com.hadoop.compression.lzo.LzopCodec';
set mapred.output.compress 'true';
加载LZO压缩文件:
A = LOAD 'output' USING com.twitter.elephantbird.pig.store.LzoPigStorage(',');
指定了分隔符为逗号,如果不想指定,括号内不加即可。
STREAM
alias = STREAM alias [, alias …] THROUGH {`command` | cmd_alias } [AS schema] ;
alias:包
#! /usr/bin/envpython
import sys for line insys.stdin:
(c,n,s) = line.split()
if int(s) >= 60:
print "%s\t%s\t%s"%(c,n,s)
执行以下命令:
define pass `pass.py` SHIP('/home/user/pass.py');
records_pass = stream records through pass as(classNo:chararray, studNo:chararray, score:int);
dump records_pass;
上面命令中ship命令是将python程序提交到Hadoop集群中。pass后面的pass.py外是反引号。
FILTER
alias = FILTER alias BY expression;
expression的返回值是boolean类型,为true则保留该条记录,为false则舍弃该条记录。
X = FILTER A BY (f1 == 8) OR (NOT (f2+f3 > f1)); DUMP X;
(4,2,1)
(8,3,4)
(7,2,5)
(8,4,3)
FOREACH
alias = FOREACH { block | nested_block };
nested_block:alias作为内部包:
alias = FOREACH nested_alias {
alias = {nested_op | nested_exp}; [{alias = {nested_op | nested_exp}; …]
GENERATE expression [AS schema] [expression [AS schema]….]
};
注:
1. 内部包使用时要用{}括住内部块。
2. nested_op允许的操作有CROSS, DISTINCT, FILTER, FOREACH, LIMIT, and ORDER BY;nested_exp:任意的表达式
3. FOREACH最多只允许二重嵌套。
示例:
X = FOREACH B {
S = FILTER A BY 'xyz';
GENERATE COUNT (S.$0);
}
UDF相关
DEFINE
语法:
DEFINE alias {function | [`command` [input] [output] [ship] [cache]] };
define udf com.sohu.adrd.data.pig.udf.sessionlog.AdPvClickUDF('super','pc','tvadview');
- function:UDF函数。udf名字太长的时候可以简化,便于在程序中使用。
- “|”后面的几个参数都是streaming的时候使用的命令。
- command:通过反引号括起来,命令是任何可执行的命令,可以包含参数,如python命令,shell命令等。
- input:输入文件或者标准输入,输入路径可以一个或多个。可以使用using关键字指定序列化器。将输入文件数据序列化成指定序列化格式。
- output:标准输出|标准错误输出|输出文件。一个或多个值。可通过using关键字指定反序列化器。将序列化数据反序列化成原文件数据。
- ship:文件路径。可以将依赖文件从主节点传输到集群中的工作节点。注意,这里是文件,不能是目录。适用于小文件,jar包,二进制文件。
define x `stream.pl` ship('/work/stream.pl');
y = stream A through x;
- cache:分布式文件系统中的文件路径名,处理已经被放在计算节点上的大文件。文件而非目录。'dfs_path#dfs_file'
define y `stream.pl data.gz` ship('/work/stream.pl') cache('/input/data.gz#data.gz');
x = stream A through y;注:1. DEFINE可小写。2. 以上文件路径名都用单引号括起来。
REGISTER
UDF的jar包在Pig脚本中指定的一种方式。
REGISTER myudf.jar 然后就可以在Pig脚本中使用自己的myudf.jar中的东西。
另一种注册方式是在执行Pig命令行中加参数 -Dpig.additional.jars的形式指定jar包路径,键值对形式,如果有多个jar,jar之间可用:符号分隔。
Pig语言基础-【持续更新中】的更多相关文章
- 嘿,C语言(持续更新中...)
---恢复内容开始--- 上次简单介绍了一下C语言,这次说说数据与计算程序,那么话不多说,进来看看. 第二章 数据与简单的计算程序 一:数据 既然说到了数据,那么说说什么是写数据呢? 表面意 ...
- Pig基础学习【持续更新中】
*本文参考了Pig官方文档以及已有的一些博客,并加上了自己的一些知识性的理解.目前正在持续更新中.* Pig作为一种处理大规模数据的高级查询语言,底层是转换成MapReduce实现的,可以作为MapR ...
- 《WCF技术剖析》博文系列汇总[持续更新中]
原文:<WCF技术剖析>博文系列汇总[持续更新中] 近半年以来,一直忙于我的第一本WCF专著<WCF技术剖析(卷1)>的写作,一直无暇管理自己的Blog.在<WCF技术剖 ...
- 史上最全的spark面试题——持续更新中
史上最全的spark面试题——持续更新中 2018年09月09日 16:34:10 为了九亿少女的期待 阅读数 13696更多 分类专栏: Spark 面试题 版权声明:本文为博主原创文章,遵循C ...
- Atom使用记录(持续更新中)
部分内容取自:http://www.jianshu.com/p/dd97cbb3c22d,我自己也在使用,持续更新中 Atom安装插件在窗口中File---Setting---install 在里面进 ...
- java视频教程 Java自学视频整理(持续更新中...)
视频教程,马士兵java视频教程,java视频 1.Java基础视频 <张孝祥JAVA视频教程>完整版[RMVB](东西网) 历经5年锤炼(史上最适合初学者入门的Java基础视频)(传智播 ...
- 【前端】Util.js-ES6实现的常用100多个javaScript简短函数封装合集(持续更新中)
Util.js (持续更新中...) 项目地址: https://github.com/dragonir/Util.js 项目描述 Util.js 是对常用函数的封装,方便在实际项目中使用,主要内容包 ...
- PTA|团体程序设计天梯赛-练习题目题解锦集(C/C++)(持续更新中……)
PTA|团体程序设计天梯赛-练习题目题解锦集(持续更新中) 实现语言:C/C++: 欢迎各位看官交流讨论.指导题解错误:或者分享更快的方法!! 题目链接:https://pintia.cn/ ...
- 前端面试题总结——HTML(持续更新中)
前端面试题总结--HTML(持续更新中) 1.什么是HTML? HTML:HyperText Markup Language超文本标记语言 2.XHTML和HTML有什么区别 HTML是一种基本的WE ...
随机推荐
- Linux终端最常用快捷键
新建终端窗口: crtl+shift+N 终端的漂移/切换:shift+左右箭头 挂 起:crtl+s 解除挂起:crtl+q 清 屏:crtl+l 命令行光标移动: crtl+a 移动到命令行首 c ...
- Arcgis 10.1安装
来源http://download.csdn.net/detail/l_j_kin/7310665#comment 测试有效,存着备用,转过来不自己写了 安装desktop 打开“注册机”,功能选择a ...
- Google 地图 API V3 之 叠加层
Google官方教程: Google 地图 API V3 使用入门 Google 地图 API V3 针对移动设备进行开发 Google 地图 API V3 之事件 Google 地图 API V3 ...
- Unity unsafe
http://answers.unity3d.com/questions/23307/is-it-impossible-to-use-the-code-with-keyword-unsa.html 可 ...
- Git入门
转: http://www.cnblogs.com/luxiaojun/p/5944145.html
- 【转载】借助GitHub托管你的项目代码
PS:自己关注博客园有2年之久了,不久前才申请注册账号.GitHub也差不多一年多了,因英语水平刚刚及格,所以去GitHub没有博客园多,也是几个月前才注册了账号,前几天休息时看到 EdisonCho ...
- JavaScript getComputedStyle
我们使用 element.style 也可以获取元素的CSS样式声明对象,但是其与 getComputedStyle 方法还是有一些差异的. 首先,element.style 是可读可写的,而 get ...
- 练习:使用nmcli 配置网络连接
显示所有连接 # nmcli con show 显示活动连接的所有配置信息 # nmcli con show "System eth0" --->引号内为连接的网卡名称 显示 ...
- PHP操作SQL Server 2008/2012
PHP操作SQL Server驱动,微软官方提供2个版本,Version 2.0 和 Version 3.0 Version 2.0 版本支持的操作系统有: Windows Server 2003 S ...
- 【荐】PDO防 SQL注入攻击 原理分析 以及 使用PDO的注意事项
我们都知道,只要合理正确使用PDO,可以基本上防止SQL注入的产生,本文主要回答以下几个问题: 为什么要使用PDO而不是mysql_connect? 为何PDO能防注入? 使用PDO防注入的时候应该特 ...