测试数据位于:/home/hadoop/luogankun/workspace/sync_data/pig
person.txt中的数据以逗号分隔

1,zhangsan,112
2,lisi,113
3,wangwu,114
4,zhaoliu,115

score.txt中的数据以制表符分隔

1       20
2 30
3 40
5 50

pig只能针对HDFS上的文件进行操作,所以需要将文件先上传到HDFS中

cd /home/hadoop/luogankun/workspace/sync_data/pig
hadoop fs -put person.txt input/pig/person.txt
hadoop fs -put score.txt input/pig/score.txt

load文件(HDFS系统上的)

a = load 'input/pig/person.txt' using PigStorage(',') as (id:int, name:chararray, age:int);
b = load 'input/pig/score.txt' using PigStorage('\t') as (id:int, score:int);

查看表结构

describe a
a: {id: int,name: chararray,age: int} describe b
b: {id: int,score: int}

查看表数据

dump a
(1,zhangsan,112)
(2,lisi,113)
(3,wangwu,114)
(4,zhaoliu,115) dump b
(1,20)
(2,30)
(3,40)
(5,50)

dump 会跑mapreduce任务。

条件过滤

查询person中id小于4的人

aa = filter a by id < 4;

dump aa;
(1,zhangsan,112)
(2,lisi,113)
(3,wangwu,114)

pig中等号使用==, 例如:aa = filter a by id == 4;

表关联

c = join a by id left , b by id;

describe c
c: {a::id: int,a::name: chararray,a::age: int,b::id: int,b::score: int}
#表名字段名之间两个冒号,字段与字段类型之间一个冒号 dump c
(1,zhangsan,112,1,20)
(2,lisi,113,2,30)
(3,wangwu,114,3,40)
(4,zhaoliu,115,,)

由于采用的是left join,所以只有四条数据,而且第四条数据是没有分数的。

迭代数据

d =foreach c generate a::id as id, a::name as name, b::score as score, a::age as age;

describe d;
d: {id: int,name: chararray,score: int,age: int} dump d
(1,zhangsan,20,112)
(2,lisi,30,113)
(3,wangwu,40,114)
(4,zhaoliu,,115)

注意:foreach使用时只要等号前或者后有一个空格即可,如果等号两端都没有空格的话会报错。

处理结果存储到HDFS系统上

store d into 'output/pig/person_score' using PigStorage(',');   #导出到HDFS上的文件分隔符是逗号
hadoop fs -ls output/pig/person_score
hadoop fs -cat output/pig/person_score/part-r-00000
1,zhangsan,20,112
2,lisi,30,113
3,wangwu,40,114
4,zhaoliu,,115 hadoop fs -rmr output/pig/person_score
store d into 'output/pig/person_score'; #导出到HDFS上的文件分隔符是制表符
hadoop fs -ls output/pig/person_score
hadoop fs -cat output/pig/person_score/part-r-00000
1 zhangsan 20 112
2 lisi 30 113
3 wangwu 40 114
4 zhaoliu 115

pig执行文件

将上面的所有pig shell脚本放到一个sh脚本中执行
/home/hadoop/luogankun/workspace/shell/pig/person_score.pig

a = load 'input/pig/person.txt' using PigStorage(',') as (id:int, name:chararray, age:int);
b = load 'input/pig/score.txt' using PigStorage('\t') as (id:int, score:int);
c = join a by id left , b by id;
d =foreach c generate a::id as id, a::name as name, b::score as score, a::age as age;
store d into 'output/pig/person_score2' using PigStorage(',');

执行person.score.pig脚本:

/home/hadoop/luogankun/workspace/shell/pig

pig person_score.pig

pig脚本传递参数

pig脚本位置:/home/hadoop/luogankun/workspace/shell/pig/mulit_params_demo01.pig

log = LOAD '$input' AS (user:chararray, time:long, query:chararray);
lmt = LIMIT log $size;
DUMP lmt;

上传数据到hdfs文件中

cd /home/hadoop/luogankun/workspace/shell/pig
hadoop fs -put excite-small.log input/pig/excite-small.log

传递方式一:逐个参数传递

pig -param input=input/pig/excite-small.log -param size=4 mulit_params_demo01.pig

传递方式二:将参数保存在txt文件中

/home/hadoop/luogankun/workspace/shell/pig/mulit_params.txt

input=input/pig/excite-small.log
size=5
pig -param_file mulit_params.txt mulit_params_demo01.pig

pig入门案例的更多相关文章

  1. SpringMVC入门案例及请求流程图(关于处理器或视图解析器或处理器映射器等的初步配置)

    SpringMVC简介:SpringMVC也叫Spring Web mvc,属于表现层的框架.Spring MVC是Spring框架的一部分,是在Spring3.0后发布的 Spring结构图 Spr ...

  2. SpringMvc核心流程以及入门案例的搭建

    1.什么是SpringMvc Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring 框架提供了构建 Web 应用程序的全功能 M ...

  3. Struts2第一个入门案例

      一.如何获取Struts2,以及Struts2资源包的目录结构的了解    Struts的官方地址为http://struts.apache.org 在他的主页当中,我们可以通过左侧的Apache ...

  4. MyBatis入门案例、增删改查

    一.MyBatis入门案例: ①:引入jar包 ②:创建实体类 Dept,并进行封装 ③ 在Src下创建大配置mybatis-config.xml <?xml version="1.0 ...

  5. Hibernate入门案例及增删改查

    一.Hibernate入门案例剖析: ①创建实体类Student 并重写toString方法 public class Student { private Integer sid; private I ...

  6. Quartz应用实践入门案例二(基于java工程)

    在web应用程序中添加定时任务,Quartz的简单介绍可以参看博文<Quartz应用实践入门案例一(基于Web应用)> .其实一旦学会了如何应用开源框架就应该很容易将这中框架应用与自己的任 ...

  7. Quartz应用实践入门案例一(基于Web环境)

    Quartz是一个完全由java编写的开源作业调度框架,正是因为这个框架整合了许多额外的功能,所以在使用上就显得相当容易.只是需要简单的配置一下就能轻松的使用任务调度了.在Quartz中,真正执行的j ...

  8. MyBatis入门案例 增删改查

    一.MyBatis入门案例: ①:引入jar包 ②:创建实体类 Dept,并进行封装 ③ 在Src下创建大配置mybatis-config.xml <?xml version="1.0 ...

  9. Hibernate入门案例 增删改

    一.Hibernate入门案例剖析: ①创建实体类Student 并重写toString方法 public class Student { private Integer sid; private I ...

随机推荐

  1. node-webkit 入门

    下载node-webkit 点击这里: https://github.com/rogerwang/node-webkit 找到Downloads这一小节,然后下载对应平台的node-webkit预编译 ...

  2. nw 调用系统命令

    ---------------------------------------------------------------------------------------------------- ...

  3. WEB接口测试之Jmeter接口测试自动化 (三)

    接口测试与数据驱动 1简介 数据驱动测试,即是分离测试逻辑与测试数据,通过如excel表格的形式来保存测试数据,用测试脚本读取并执行测试的过程. 2 数据驱动与jmeter接口测试 我们已经简单介绍了 ...

  4. 转载: Linux 操作系统挂起、休眠、关机相关命令

    最近每天的工作都难以在当天结束,而本人又不是那种善于熬夜的人,因此就需要将电脑中的工作文件全部保存,以往都是将所有工作文件保存关机,但是最近发现Linux系统有一个好神奇的命令: 休眠: sudo p ...

  5. makefile for opencv

    makefile #################################################### # Generic makefile - 万能Makefile # for ...

  6. xdoj-1149(多重集合+容斥原理+组合数取模)

    #include <iostream> #include <algorithm> #include <cstdio> using namespace std; ty ...

  7. poj-1170 (状态压缩形式下的完全背包)

    #include <iostream> #include <algorithm> #include <cstring> using namespace std; ; ...

  8. Appium笔记(二) 丶Appium的安装

    一.前言 Appium 中有个很重要的组件Appium-Server,它主要用来监听我们的移动设备(真机或模拟器),然将不同编程语言编写的 appium 测试脚本进行解析,然后,驱动移动设备来运行测试 ...

  9. 字符串匹配--(K)MP模板

    大白书型模板,并没有写成函数形式: 这个是下标从0开始的: 此外,对于一个长度为 m 的串自匹配,在此模板中 m-p[m] 就是这个串的最小循环节长度(最后一个循环可以不完整) 另一个关于自匹配后的失 ...

  10. POJ2311 Cutting Game

    题意 Language:Default Cutting Game Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6007 Acc ...