0 概念:
Pig是专门用于处理数据的。
Pig提供了一套流式的数据处理语言,转换为MapReduce,处理HDFS中的数据。
pig加载hdfs文件到自己体系内处理好后在送回去。
pig中的字符串类型是bytearray
下载地址: http://www.apache.org/dyn/closer.cgi/pig
1 如何安装和使用pig?
不用配置,pig启动时读配置文件得到Hadoop的配置信息
直接解压缩,执行bin/pig,就进入到终端grunt命令行,会发现自动连接Hadoop的 hdfs://master:9000,如下:
ne.HExecutionEngine - Connecting to hadoop file system at: hdfs://master:9000 2014-12-24 00:11:44,406 [main] INFO org.apache.pig.backend.hadoop.executionengine.HExecutionEngine - Connecting to map-reduce job tracker at: master:9001 grunt>
2 命令简介:
扫描二维码关注公众号,回复:
525209 查看本文章
a) 查看hdfs文件 grunt> fs -ls / Found 8 items drwxr-xr-x - zm supergroup 0 2014-12-18 21:23 /files drwxr-xr-x - root supergroup 0 2014-12-23 20:55 /hbase -rw-r--r-- 3 zm supergroup 2388 2014-12-23 20:48 /hello -rw-r--r-- 3 zm supergroup 19 2014-12-02 04:16 /hello2 drwxr-xr-x - zm supergroup 0 2014-12-18 21:24 /out drwxr-xr-x - root supergroup 0 2014-12-11 23:46 /tmp drwxr-xr-x - root supergroup 0 2014-12-11 19:24 /user drwxr-xr-x - root supergroup 0 2014-12-08 03:04 /usr b)load 加载HDFS输入进入Pig, 主要 load后跟的是hdfs的路径 =左右需要空格 dump命令用于查看 a = load '/user.data';dump a; //默认使用制表符分隔加载的文件 b = load '/user.data2' using PigStorage(';');dump b; //加载文件时,指定分隔符,这样展示的时候会将分割的东西用,间隔后展示 eg: 展示b的结果为: hello,you) (hello,me) (hello,30) c = load '/user.data' using HBaseStorage;//可以加载hbase数据 d = load '/user.data' as (id, name);dump d; // 加载时 指定别名 grunt> describe d; d: {id: bytearray,name: bytearray} e = load '/user.data' as (id:int, name:bytearray);dump e; // 加载时,指定别名和对应加载后的类型 c) 将pig内处理的数据在写入到hdfs中: store...into... 写入到hdfs中 eg: grunt> store c into '/pigtest'; // 需要'' ,写到hdfs下的是目录结构 后用hdfs命令查看: [root@master data]# hadoop fs -text /pigtest/part-m-00000 Warning: $HADOOP_HOME is deprecated. hello you hello me hello 30 d) describe 显示关系的结构 foreach...generate... 迭代每一行记录 // 类比于, select $0 as id, $1 as name from a; $占位符,表示目标文件以分隔符分割下元素位置 f = foreach a generate $0 as id, $1 as name;dump f; g = foreach e generate id,name;dump g; filter...by... 过滤 // 类比于 where h = filter f by id>1;dump h; group...by... 分组 group h by uid; order...by... 排序 i = order h by uid desc;
3 和hive的区别:
pig每一步都是一个小的操作,没有一个像 select from where group by order by 这种复杂操作,
hive: 立定跳远,一下要跳到终点, 适用人群: 更倾向于使用SQL语句
pig: 分小步来跳,每一步都不累,然后到达终点