hadoop-pig学习笔记

A1 = LOAD ‘/luo/lzttxt01.txt‘ AS (col1:chararray,col2:int,col3:int,col4:int,col5:double,col6:double);
B1 = GROUP A1 BY (col2,col3,col4);
C1 = FOREACH B1 GENERATE FLATTEN(group),AVG(A1.col5),AVG(A1.col6); ---这里的A1指的是B1里的A1,B1中有若干个A1;
STORE C1 INTO ‘/output1‘;

A = LOAD ‘/luo/txt.txt‘ AS (col1:chararray,col2:int,col3:int,col4:int,col5:double,col6:double);
B = GROUP A ALL;
C = FOREACH B GENERATE COUNT(A.col2);
DUMP C;

A1 = LOAD ‘/lu/lzttxt01.txt‘ AS (col1:chararray,col2:int,col3:int,col4:int,col5:double,col6:double);
B1 = GROUP A1 BY (col2,col3,col4);
C1 = FOREACH B1 {D = DISTINCT A1.col6; GENERATE group ,COUNT(D);};
DUMP C1;

A = LOAD ‘/lu1/b01.txt‘ AS (col1:int,col2:int,col3:int,col4:chararray,col5:chararray);
B = STREAM A THROUGH `awk ‘{if($4=="=") print $1"\t"$2"\t"$3"\t9999\t"$5;else print $0}‘`; -- STREAM .. THROUGH ..调用shell语句 当第四列为“=”号时,将其替换为9999,否则就按照原样输出这一行
DUMP B

若是aa.pig 方式的话文件要放在root本地:pig -x mapreduce /luo/aa.pig 执行 或是 pig -x local test.pig

A = LOAD ‘/lu1/a.txt‘ AS (acol1:chararray,acol2:int,acol3:int);
B = LOAD ‘/lu1/c.txt‘ AS (bol1:int,bol2:chararray,bol3:int);
C = COGROUP A BY acol1,B BY bol2; ---cogroup 可以按多个关系中的字段进行分组
DUMP C;

A = LOAD ‘/lzt02/aa01.txt‘ AS (a:int,b:int);
B = LOAD ‘/lzt02/aa02.txt‘ AS (c:int,d:int);
C = UNION A,B;
D = GROUP C BY $0;按第一列进行分组
E = FOREACH D GENERATE FLATTEN(group),SUM(C.$1); $1第二列
DUMP E;

A1 = LOAD ‘/lzt02/aa03.txt‘ AS (a11:int,b11:chararray); 符合"*//*.qq.com/*"
B1 = FILTER A1 BY b11 matches ‘.*//.*\\.qq\\.com/.*‘;
C1 = FILTER B1 BY (a11 matches(‘\\d‘))
DUMP B1;
.表示任意字符, * 表示任意次数,\.是对.的转义 ,/就是表示/这个字符;注意在引号中\\.才是和正则中的\.的一致
正则中\d表示匹配数字,在引号中必须用‘\\d‘

1.定义的数据结构为元组
A = LOAD ‘luo.txt‘ AS (T : tuple(col1:int,col2:int,col3:int,col4:chararray,col5:chararray)) --使用与数据是这种格式的(1,2,3,5,2,4)

2.
STORE A into ‘$output_dir‘ --使用参数
pig -param output_dir="/home/my_outdir" my_pig_script.pig
3.load 多个目录下的数据:
A = LOAD ‘/abc/201{0,1}‘
4.两个整数相除,想得到整数和浮点数
整数:(float)(col1/col2) 浮点数: (float)col1/col2
5.substring
B = FOREACH A GENERATE SUBSTRING(date,0,4)
6.拼接concat
A = LOAD ‘1.txt‘ AS (col1:chararray,col2:int);
B = FOREACH A GENERATE CONCAT(col1,(chararray)col2) ----多个字段进行拼接时使用concat嵌套:concat(a,concat(b,c))
7.join的用法,求两个数据表中重合的个数
A = LOAD ‘/lzt02/aa01.txt‘ AS (a:int,b:int);
B = LOAD ‘/lzt02/aa02.txt‘ AS (c:int,d:int);
C = JOIN A BY a,B BY d;
D = DISTINCT C;
E = GROUP D ALL;
F = FOREACH E GENERATE COUNT(D)

8.使用三目运算符“?:”
B = FOREACH A GENERATE col1,((col2 is null)?-1 :col2),col3


A = LOAD ‘1.txt‘ AS (a:int,b:tuple(x:int,y:int)); ----适用于2,(3,5)这样的数据
B = FOREACH A GENERATE a,FLATEEN(b);
C = FOREACH B GENERATE group ,SUM(B.x) AS S;
D = FOREACH C GENERATE group,(s is null)?-1 :s

9. 在第一列的每种组合下,第二列为3和6的数据分别有多少条
A = LOAD ‘/lzt02/aa01.txt‘ AS (a:int,b:int);
B = GROUP A BY a;
C = FOREACH B {
D = FILTER A BY b==3; ##这里的A是B中的A
E = FILTER A BY b==6;
GENERATE group,count(D),count(E);
}
DUMP C;B

10. A = LOAD ‘/lzt02/aa01.txt‘ AS (a:int,b:int);
B = LOAD ‘/lzt02/aa02.txt‘ AS (c:int,d:int);
C = JOIN A BY a LEFT OUTER,B BY d; ----c中有两张表的全部字段 ,遵循left join 原则
D = DISTINCT C;
E = GROUP D ALL;
F = FOREACH E GENERATE COUNT(D)

11.A表中有,但是B表中没有的数据
A = LOAD ‘/lzt02/aa01.txt‘ AS (a1:int,b1:int);
B = LOAD ‘/lzt02/aa02.txt‘ AS (a1:int,b1:int);
C = JOIN A BY a1 left outer,B BY a1;
D = FILTER C BY (B::a1 is null);
E = FOREACH D GENERATE A::a1 AS a1,A::a2 AS a2;
DUMP E;

12.每种组合有多少个
1 9
2 4
1 9
2 4

A = LOAD ‘/lzt02/aa01.txt‘ AS (a1:int,b1:int);
B = GROUP A BY (a1,a2);
C = FOREACH B GENERATE group,COUNT(A);

13.一个字符串为null 与它为空不一定等价
B = FILTER A BY (a1 is not null AND (SIZE(a1)>0L));

14.统计一个字符串中包含的指定字符数()

B = STREAM A THROUGH `awk -F "luo" ‘{print NF-1}‘` AS (column_count:int)

时间: 2024-10-14 03:48:43

hadoop-pig学习笔记的相关文章

Hadoop入门学习笔记---part4

紧接着<Hadoop入门学习笔记---part3>中的继续了解如何用java在程序中操作HDFS. 众所周知,对文件的操作无非是创建,查看,下载,删除.下面我们就开始应用java程序进行操作,前提是按照<Hadoop入门学习笔记---part2>中的已经在虚拟机中搭建好了Hadoop伪分布环境:并且确定现在linux操作系统中hadoop的几个进程已经完全启动了. 好了,废话不多说!实际的例子走起. 在myeclipse中新建一个java工程: 在项目工程中新建一个lib包用于存放

Hadoop入门学习笔记---part1

随着毕业设计的进行,大学四年正式进入尾声.任你玩四年的大学的最后一次作业最后在激烈的选题中尘埃落定.无论选择了怎样的选题,无论最后的结果是怎样的,对于大学里面的这最后一份作业,也希望自己能够尽心尽力,好好做.正是因为选题和hadoop有关,现在正式开始学习hadoop.将笔记整理于此,希望与志同道合的朋友共同交流. 作者:itRed 邮箱:[email protected] 个人博客链接:http://www.cnblogs.com/itred 好了,废话不多说.进入正题!开始hadoop的学习

Hadoop入门学习笔记---part3

2015年元旦,好好学习,天天向上.良好的开端是成功的一半,任何学习都不能中断,只有坚持才会出结果.继续学习Hadoop.冰冻三尺,非一日之寒! 经过Hadoop的伪分布集群环境的搭建,基本对Hadoop有了一个基础的了解.但是还是有一些理论性的东西需要重复理解,这样才能彻底的记住它们.个人认为重复是记忆之母.精简一下: NameNode:管理集群,并且记录DataNode文件信息: SecondaryNameNode:可以做冷备份,对一定范围内的数据作快照性备份: DataNode:存储数据:

Hadoop概括——学习笔记&lt;一&gt;

之前有幸在MOOC学院抽中小象学院hadoop体验课. 这是小象学院hadoop2.X概述第一章的笔记 第一章主要讲的是hadoop基础知识.老师讲的还是比较全面简单的,起码作为一个非专业码农以及数据库管理人员,也能狗大致了解其特点.后面因为8月比较忙,就主要看案例那一部分了,应用及基础部分笔记基本没怎么做. 基本上是3/4屏幕放视频,1/4开着马克飞象 首先是概括图(以hadoop2.0为例)  不在博客园上阅读时才会看到的,这篇博文归http://www.cnblogs.com/weibaa

智传播客hadoop视频学习笔记(共2天)

第一天:1.答疑解惑•  就业前景•  学习hadoop要有什么基础•  hadoop会像塞班一样,热一阵子吗•  hadoop学习起来容易还是困难•  课堂上的学习方法(所有实验必须按照要求做,重原理.重实践)•  通过本课程能学到什么 2. 课程简介•  以真实的电信详单分析程序为主线,讲解Hadoop,Hbase,Hive在大数据处理的应用场景与过程•  通过此课程,你能     •  掌握Hadoop基本知识,进行HadoopHDFS和MapReduce应用开发,搭建Hadoop集群  

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

使用java调用hadoop接口学习笔记

[简介] 由于hadoop是安装在linux系统,因此需要在linux系统使用eclipse开发java.现在很多公司都要求有在linux上开发java的经验 ,因此这也是一个练手的绝好机会.学习hadoop不仅仅是学习了hadoop,我相信等hadoop入门,linux也入门了,shell也入门了,linux上开发java也会了,或许这就是学习的魅力吧,让人欲罢不能!废话不多说,进入正题. [安装eclipse] 工欲善其事,必先利其器,想在linux上用java开发hadoop程序,搭建环境

Hadoop入门学习笔记之一

http://hadoop.apache.org/docs/r1.2.1/api/index.html 适当的利用 null 在map中可以实现对文件的简单处理,如排序,和分集合输出等. 需要关心的内容 一个节点面对的是一个Map任务,一个Map任务面对的是一个split文件,一个map方法面对的是一个split文件生成的键值对. mapper类中map方法的输入是InputFormat的ReadeRecord类读取到的键值对 学习一周之后问题总结: 1.实验时使用的文件过小,大量小文件问题,需

Hadoop序列化学习笔记(一)

什么是序列化? 序列化(serialization),是指将结构化对象转化为字节流,以便在网络上传输或写入磁盘进行永久存储. 反序列化(deserialization),是指将字节流重新转换为结构化对象. Hadoop使用哪种序列化框架? Hadoop使用自己的序列化格式Writable,除开Writable,Hadoop也支持Avro序列化框架. Writable格式紧凑,速度快.,但很难使用除开Java之外的语言对它进行扩展. Avro支持跨语言使用,意思是,可以用Python写入文件,而用

Hadoop学习笔记—16.Pig框架学习

一.关于Pig:别以为猪不能干活 1.1 Pig的简介 Pig是一个基于Hadoop的大规模数据分析平台,它提供的SQL-LIKE语言叫Pig Latin,该语言的编译器会把类SQL的数据分析请求转换为一系列经过优化处理的MapReduce运算.Pig为复杂的海量数据并行计算提供了一个简单的操作和编程接口. Compare:相比Java的MapReduce API,Pig为大型数据集的处理提供了更高层次的抽象,与MapReduce相比,Pig提供了更丰富的数据结构,一般都是多值和嵌套的数据结构.