pig常用命令
一、pig:
pig提供了一个基于Hadoop的并行地执行数据流处理的引擎。它包含了一种脚本语言,称为Pig Latin。(类似SQL)
二、Pig Latin:
1、注释:
单行:--
多行:/* */
2、输入和输出:
加载:load '文件'
using PigStorage(',');
as (exchange,symbol,date,dividends);
//使用内置函数PigStorage函数,指定分隔符为',';还有一个加载函数是TextLoader。
//采用as指定加载数据的模型。
存储:store 变量 into '输出文件';
输出:dump 变量;//打印
3、关系操作:
foreach:接受一组表达式,然后将它们应用到每条记录中。比如:加载完所有记录,只保留user和id两个字段。
A = load 'input' as (user:chararray , id:long , address:chararray);
B = foreach A generate user,id;
foreach 语句中的UDF(自定义函数)
Filter:
Group ×× by ×× :
Order by:
Distinct:
Join:
Limit:
4、自定义函数UDF:
注册UDF:REGISTER '…….jar‘;
define命令和UDF:define命令可用于为用户的Java UDF定义一个别名,这样用户就不需要写那么冗长的包名全路径了,它也可以为用户的UDF的构造函数提供参数。
set:在pig脚本前面加上set ***; 这个命令可在Pig脚本的开头来设置job的参数;
三、例子:
1、使用三目运算符来替换空值
B = FOREACH A GENERATE ((col1 is null) ? - :col1)
2、外连接JOIN:
LEFT:左边的数据全量显示
A = LOAD '1.txt' USING PigStorage('\t') AS (col1:int , col2:chararray);
B = LOAD '2.txt' USING PigStorage('\t') AS ( col1:int , col2:chararray);
C = JOIN A BY col1 LEFT , B BY col1;
DESCRIBE C;
DUMP C;
3、合并文件A和B的数据:
A = LOAD 'A.txt';
B = LOAD 'B.txt';
C = UNION A,B;
DUMP C;
4、表示文件的第一个字段(第一列):$0;
5、pig统计文件的词频:TOKENIZE
-- 统计数据的行数 cd hdfs:/// A = LOAD '/logdata/2012*/*/nohup_*' AS (name:chararray) ; B = GROUP A BY name; C = FOREACH B GENERATE group, COUNT(A); D = ORDER C BY ($); E = FILTER D BY $ > ; dump E; -- 统计单词的个数 A = LOAD'/logdata/20130131/*/*' AS (line: chararray) ; B = foreach A generate flatten(TOKENIZE((chararray)$)) as word; C = group B by word; D = foreach C generate COUNT(B), group; E = ORDER D BY ($); F = FILTER E BY $> ; DUMP F;
TOKENIZE函数:https://www.w3cschool.cn/apache_pig/apache_pig_tokenize.html
举例子:
1.txt;
i am hadoop
i am hadoop
i am lucene
i am hbase
i am hive
i am hive sql
i am pig
pig代码:
--load文本的txt数据,并把每行作为一个文本
a = load '1.txt' as (f1:chararray);
--将每行数据,按指定的分隔符(这里使用的是空格)进行分割,并转为扁平结构
b = foreach a generate flatten(TOKENIZE(f1, ' '));
--对单词分组
c = group b by $;
--统计每个单词出现的次数
d = foreach c generate group ,COUNT($);
--存储结果数据
stroe d into '$out'
##注意,COUNT函数一定要大写,不然会报错: ERROR org.apache.pig.PigServer- exception during parsing:Error during parsing. Could not resolve count using imports:[, java.lang., org.apache.pig.builtin., org.apache.pig.impl.builtin.]
处理的结果:
(i,)
(am,)
(pig,)
(sql,)
(hive,)
(hbase,)
(hadoop,)
(lucene,)
取topN功能:
-- 按统计次数降序
e = order d by $ desc;
--取top2
f = limit e ;
--存储结果数据
stroe f into '$out'
6、pig嵌套循环
https://blog.csdn.net/jameshadoop/article/details/24838915
7、pig传参
A = LOAD '$INPUT_DIR' AS (t0:long, msisdn:chararray, t2:chararray, t3:chararray, t4:chararray,t5:chararray, t6:long, t7:long, t8:long, t9:long, t10:chararray);
B = FOREACH A GENERATE msisdn, t6, t7, t8, t9;
C = GROUP B BY msisdn;
D = FOREACH C GENERATE group, SUM(B.t6), SUM(B.t7), SUM(B.t8), SUM(B.t9);
STORE D INTO '$OUTPUT_DIR';
pig -p INPUT_DIR=hdfs://mycluster/pig/in -p OUTPUT_DIR=hdfs://mycluster/pig/out ./schedule.pig
---------------------
原文:https://blog.csdn.net/aaronhadoop/article/details/44310633
PIG 命令行传多个参数
PIG 命令行执行脚本,多个参数传递问题终于解决了,实例如下:
pig -p startdate=2011-03-21 -p enddate=2011-03-28 script.pig
这样就可以实现多个参数传递的例子,但其中,如果参数值中存在空格,则会报错,
原文:https://blog.csdn.net/iteye_19679/article/details/82580903
8、两列相除:
# 两个整数相除,如何得到一个float
A = LOAD '16.txt' AS (col1:int, col2:int);
B = FOREACH A GENERATE (float)col1/col2;
DUMP B;
# 注意先转型在计算,而不是(float)(col1/col2);
9、filter正则匹配:
https://www.cnblogs.com/lishouguang/p/4559300.html
)等值比较
filter data by $ ==
filter data by $ != )字符串 正则匹配 JAVA的正则表达式
字符串以CM开头
filter data by $ matches 'CM.*'; 字符串包含CM
filter data by $ matches '.*CM.*'; )not
filter data by not $==;
filter data by not $ matches '.*CM.*';
)NULL处理
filter data by $ is not null;
)UDF
filter data by isValidate($);
)and or
filter data by $!= and $>
10、修改Pig作业执行的queue
作业提交到的队列:mapreduce.job.queuename
作业优先级:mapreduce.job.priority,优先级默认有5个:LOW VERY_LOW NORMAL(默认) HIGH VERY_HIGH
1、静态设置
1.1 Pig版本
SET mapreduce.job.queuename root.etl.distcp;
SET mapreduce.job.priority HIGH;
---------------------
作者:wisgood 来源:CSDN
原文:https://blog.csdn.net/wisgood/article/details/39075883
https://my.oschina.net/crxy/blog/420227?p=1
pig常用命令的更多相关文章
- Mysql 常用命令集
1.mysqlbinlog工具使用方法如下: 先使用 show binary logs 查看 在使用导出命令 mysqlbinlog -R -uroot -pxxxx -hxxx.xxx.xxx.xx ...
- hadoop伪分布模式的配置和一些常用命令
大数据的发展历史 3V:volume.velocity.variety(结构化和非结构化数据).value(价值密度低) 大数据带来的技术挑战 存储容量不断增加 获取有价值的信息的难度:搜索.广告.推 ...
- Linux 常用命令(持续补充)
常用命令: command &:将进程放在后台执行 ctrl + z:暂停当前进程 并放入后台 jobs:查看当前后台任务 bg( %id):将任务转为后台执行 fg( %id):将任务调回前 ...
- LVM基本介绍与常用命令
一.LVM介绍LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制LVM - 优点:LVM通常用于装备大量磁盘的系统,但它同样适 ...
- Linux学习笔记(一):常用命令
经过统计Linux中能够识别的命令超过3000种,当然常用的命令就远远没有这么多了,按照我的习惯,我把已经学过的Linux常用命令做了以下几个方面的分割: 1.文件处理命令 2.文件搜索命令 3.帮助 ...
- git常用命令(持续更新中)
git常用命令(持续更新中) 本地仓库操作git int 初始化本地仓库git add . ...
- 【原】npm 常用命令详解
今年上半年在学习gulp的使用,对npm的掌握是必不可少的,经常到npm官网查询文档让我感到不爽,还不如整理了一些常用的命令到自己博客上,于是根据自己的理解简单翻译过来,终于有点输出,想学习npm这块 ...
- npm常用命令
npm常用命令 环境:win7 npm 是什么 NPM(node package manager),通常称为node包管理器.顾名思义,它的主要功能就是管理node包,包括:安装.卸载.更新.查看.搜 ...
- Git 常用命令
一.初始環境配置 git config --global user.name "John Doe"git config --global user.email johndoe@ex ...
随机推荐
- HDU 1241 Oil Deposits (DFS)
题目链接:Oil Deposits 解析:问有多少个"@"块.当中每一个块内的各个"@"至少通过八个方向之中的一个相邻. 直接从"@"的地方 ...
- Ubuntu14 中安装 VMware10 Tools工具<2>
网上说已经针对上一篇提到的无法显示共享文件夹的问题做了补丁.补丁地址是https://github.com/rasa/vmware-tools-patches,我没有成功,还是出现"hgfs ...
- Java创建和解析Json数据方法——org.json包的使用(转)
org.json包的使用 1.简介 工具包org.json.jar,是一个轻量级的,JAVA下的json构造和解析工具包,它还包含JSON与XML, HTTP headers, Cookies, ...
- Hibernate——三种状态的理解
在Hibernate中有三种状态,对这三种状态的深入的理解,能够更好的理解Hibernate的执行机制. 在整个Hibernate中这三种状态是能够进行转换的. 1.Transient Object( ...
- javascript的call和apply
coffeescript里,每个文件编译成JS后,都是(function(){...}).call(this);的架势 这个call,该怎么理解呢? 在javascript里面,call 或者 app ...
- Linux gadget驱动分析3------复合设备驱动
windows上面对usb复合设备的识别需要下面条件. “ 如果设备满足下列要求,则总线驱动程序还会报告 USB\COMPOSITE 的兼容标识符: 设备描述符的设备类字段 (bDeviceClass ...
- JavaScript Patterns 2.1 Writing Maintainable Code
Revisiting the code after some time has passed requires: • Time to relearn and understand the proble ...
- eclipse的快捷键---调试
1:查看类或接口的方法 Ctrl+T 2:debug调试查看信息 Ctrl+Shift+i 3:debug调试快捷键 (1):F11好像是重新运行debug. (2):F8直接输出结果.(3):F5单 ...
- Three Kingdoms(优先队列+bfs)
http://acm.hdu.edu.cn/showproblem.php?pid=3442 题意:ABCD有各自的攻击力与攻击范围,刘备只能走"C"与".", ...
- node.js的模块引用
1.模块的引用示例 var math = require(‘math’): 在common.js规范中,存在require()方法,这个方法接受模块标识,此引引入一个模块的api ...