pig 安装和命令简介

 

 

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 命令简介:

 

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:  分小步来跳,每一步都不累,然后到达终点

 

你可能感兴趣的:(pig)