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)
hadoop-pig学习笔记的更多相关文章
- Hadoop入门学习笔记---part4
紧接着<Hadoop入门学习笔记---part3>中的继续了解如何用java在程序中操作HDFS. 众所周知,对文件的操作无非是创建,查看,下载,删除.下面我们就开始应用java程序进行操 ...
- Hadoop入门学习笔记---part3
2015年元旦,好好学习,天天向上.良好的开端是成功的一半,任何学习都不能中断,只有坚持才会出结果.继续学习Hadoop.冰冻三尺,非一日之寒! 经过Hadoop的伪分布集群环境的搭建,基本对Hado ...
- Hadoop入门学习笔记---part2
在<Hadoop入门学习笔记---part1>中感觉自己虽然总结的比较详细,但是始终感觉有点凌乱.不够系统化,不够简洁.经过自己的推敲和总结,现在在此处概括性的总结一下,认为在准备搭建ha ...
- Hadoop入门学习笔记---part1
随着毕业设计的进行,大学四年正式进入尾声.任你玩四年的大学的最后一次作业最后在激烈的选题中尘埃落定.无论选择了怎样的选题,无论最后的结果是怎样的,对于大学里面的这最后一份作业,也希望自己能够尽心尽力, ...
- Hadoop入门学习笔记(一)
Week2 学习笔记 Hadoop核心组件 Hadoop HDFS(分布式文件存储系统):解决海量数据存储 Hadoop YARN(集群资源管理和任务调度框架):解决资源任务调度 Hadoop Map ...
- Hadoop Oozie 学习笔记
Oozie是一个工作流引擎服务器,用于运行Hadoop Map/Reduce和Pig 任务工作流.同时Oozie还是一个Java Web程序,运行在Java Servlet容器中,如Tomcat. O ...
- Hadoop概括——学习笔记<一>
之前有幸在MOOC学院抽中小象学院hadoop体验课. 这是小象学院hadoop2.X概述第一章的笔记 第一章主要讲的是hadoop基础知识.老师讲的还是比较全面简单的,起码作为一个非专业码农以及数据 ...
- Hadoop入门学习笔记总结系列文章导航
一.为何要学习Hadoop? 这是一个信息爆炸的时代.经过数十年的积累,很多企业都聚集了大量的数据.这些数据也是企业的核心财富之一,怎样从累积的数据里寻找价值,变废为宝炼数成金成为当务之急.但数据增长 ...
- Hadoop概括——学习笔记<一>转
前言 第一章主要讲的是hadoop基础知识.老师讲的还是比较全面简单的,起码作为一个非专业码农以及数据库管理人员,也能狗大致了解其特点 首先是概括图(以hadoop2.0为例) 一.Hadoop基础 ...
- hadoop spark学习笔记
http://www.csdn.net/article/2015-06-08/2824889 hive:是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sq ...
随机推荐
- swift的值类型和引用类型
前言 最近在学设计模式中,发现 Swift 中的 struct,class 以及 enum 在一般的使用中能够做到互相替换,因此探究其背后的逻辑就十分有必要.而这一问题又引出了 Swift 中的值类型 ...
- 024_MapReduce中的基类Mapper和基类Reducer
内容提纲 1) MapReduce中的基类Mapper类,自定义Mapper类的父类. 2) MapReduce中的基类Reducer类,自定义Reducer类的父类. 1.Mapper类 API文档 ...
- 011_Eclipse中使用HDFSFileSystemAPI事例介绍
需求 1.文件操作 1)上传本地文件到HDFS 2)读取文件 3)在hadoopfs中新建文件,并写入 4)重命名文件 5)删除hadoopfs上的文件 2.目录操作 1)读取某个目录下的所有文件 2 ...
- require.js和sea.js的区别
下面为大家讲解一下require.js和sea.js的区别.纯属个人意见,不喜勿喷. 首先原理上的区别 sea.js遵循CMD规范.书写方式类似node.js的书写模板代码.依赖的自动加载,配置的简洁 ...
- Linux下解压分包文件zip(zip/z01/z02)
分包压缩的zip文件不能被7z解压,且这种格式是Windows才能创建出来,在Linux下不会以这种方式去压包.下面是在Linux下处理这种文件的做法: 方法一: cat xx.z01 xx.zip ...
- C++逗号表达式
c++中,逗号表达式的结果是最右边表达式的值
- Yii框架和Vue的完美结合完成前后端分离项目
背景说明 本文假设你对Yii和Vue都比较熟悉,至少都在项目里用过,另外笔者新人,以后不定时放一些干货,欢迎程序媛关注 Yii是一个PHP全端框架,典型的mvc的项目结构,后端接口都是一个控制器里放了 ...
- ADO.Net连接Oracle
1.添加 Oracle.ManagedDataAccess.dll 2.连接Oracle的实例得添加到Oracle的监听器中,不然会报“ORA-12514: TNS: 监听程序当前无法识别连接描述符中 ...
- java assert的使用并深入解析Java的assertion
java assert的使用并深入解析Java的assertion 分类: java2012-12-05 13:32 2020人阅读 评论(0) 收藏 举报 原文出处:http://blog.csdn ...
- linux查看cpu
#查看物理CPU个数 cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l #查看每个物理CPU中core的个数(即核数 ...