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 ...
随机推荐
- 连载:面向对象葵花宝典:思想、技巧与实践(34) - DIP原则
DIP,dependency inversion principle,中文翻译为"依赖倒置原则". DIP是大名鼎鼎的Martin大师提出来的.他在1996 5月的C++ Repo ...
- CSS中的BFC解析
CSS的BFC BFC 即块级格式上下文(Block Formatting Context),它是指一个独立的块级渲染区域,只有block-level的box参与,该区域拥有一套渲染规则来约束块级盒子 ...
- User32.dll详细介绍
RegisterServiceProcess(ProcessID:Long,Type:Long) 该函数存在于Kernal32.dll中. Process指向进程的ID,Type表示是否向系统注册该进 ...
- 【转】Caused by: java.lang.NoClassDefFoundError: android.support.v7.gridlayout.R$dimen 异常解决方法
在使用gridlayout中遇到 Caused by: java.lang.NoClassDefFoundError: android.support.v7.gridlayout.R$dimen 问题 ...
- codeforce1070 2018-2019 ICPC, NEERC, Southern Subregional Contest (Online Mirror, ACM-ICPC Rules, Teams Preferred) 题解
秉承ACM团队合作的思想懒,这篇blog只有部分题解,剩余的请前往星感大神Star_Feel的blog食用(表示男神汉克斯更懒不屑于写我们分别代写了下...) C. Cloud Computing 扫 ...
- poj2115 C Looooops——扩展欧几里得
题目:http://poj.org/problem?id=2115 就是扩展欧几里得呗: 然而忘记除公约数... 代码如下: #include<iostream> #include< ...
- DVB条件接收系统多密技术的设计与实现
1相关技术比较 1.1DVB同密 DVB同密技术的目的是将两家或两家以上的CA系统应用于同一网络平台中,从电视台角度实现技术的选择和竞争的环境.同密允许在传输的同一套节目流中携带由不同CAS生成的多个 ...
- [Swift通天遁地]四、网络和线程-(12)使用ReachabilitySwift实现对网络状态的检测
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- [Swift通天遁地]七、数据与安全-(9)文件的压缩和解压
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- 多个@bean无法通过@resource注入对应的bean(org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'javax.sql.DataSource' available: expected single matching bean but found )
一.异常 org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type ' ...