昨天成功运行第一个在hadoop集群上面的python版本的wordcount,今天白天继续看网上提供的文档。下午上头给定的回复是把hadoop家族都熟悉一下,那就恭敬不如从命,开始学习pig吧~

  这一年多的编程之路让我知道学习任何一门新的技术的最入门的方式就看文档,let's geting started!

  首先声明一下我的环境是在公司布置好的集群上面运行的程序,因此各位不愿意配置环境又木有条件的可以在cloudera提供的虚拟机配置的环境下跑程序。在进入公司的第一天就听说他们在用pig处理数据,说实在话当初我连hadoop有哪些成员都不知道,也是这两周各种google才知其皮毛,由前两天的烦躁慢慢安静下来,这也是程序员的乐趣吧,知足者常乐><

  pig其实并不是什么高大上的东西,只是为了大大的简化mapreduce的一些繁琐的key,value处理而直接处理数据的一个类sql语言,如果你学过sql语句,那么学习pig将会顺手拈来。只不过,我在学习的过程中遇到一两个错误导致耽搁了那么一两个小时的学习效率因此记录下来,希望能给后来者一个warning~

  类似于一般的sql语句,pig也有自己的一些operations,请看下图(图片来源于ibm

  你可以通过很多模式执行pig的latin语句以及命令,如下列表所示:

  我们主要分为交互式模式和命令行批量模式(个人理解),执行环境目前只接触了本地模式和mapreduce的集群模式。下面的知识都是介绍在集群下交互式和脚本跑pig这两种情况。

一、shell下进行交互式运行pig

  在命令行直接输入pig就可以进入shell模式,关于这个shell下可执行的脚本参数可以help查询一下,接下来在运行pig的latin语句前你需要确保你的环境是正确的。参考:ibm中文社区文档

1、确保你此时的hadoop是连接的,已经启动了的:

在命令行下输入如下命令会返回hdfs系统下根目录的文件夹情况:

$ hadoop dfs -ls /

2、进入在命令行输入‘pig’进入mapreduce模式pig的grunt shell界面,然后在该界面下进入hdfs系统目录:

$ pig

grunt>cd hdfs:///  --进入根目录

  比如上图中,第一行命令显示的当前路径,第二行通过cd命令进入hdfs的根目录,当然接下来的运行环境都是在’/user/wuying/‘这个目录下运行一次我会把数据‘passwd’文件从本地的目录‘/etc/passwd’上传到hdfs系统下的‘/user/wuying/’路径下:

grunt> copyFromLocal /etc/passwd passwd  --从本地上传文件到hdfs上
grunt> ls --查看当前目录下是否存在passwd文件
grunt> cat passwd --查看passwd文件格式

  根据上图的passwd文件内容显示,该文件每一行格式类似,都是用‘:‘分割的数据,类似于sql中的数据属性,可以通过as关键字将该数据赋予不同的字段和类型,当然这里为了方便测试,进食将数据按照':'分割,下面是latin语句:

grunt> A = load 'passwd' using PigStorage(':');  --加载passwd文件,并用冒号’:‘将数据分离为多个字段
grunt> B = foreach A generate $0 as id; --将每一次迭代的第一个元祖数据作为id
grunt> dump B; 在命令行输出结果

  若执行成功,id如上图所示输出。

二、批量模式下运行脚本*.pig文件

  首先,在本地编辑myscript.pig脚本文件:

/* script.pig */

A = load 'passwd' using PigStorage(':');
B = foreach A generate $0 as id;
store B into ‘id.out’; -- 将结果写入到id.out文件

  然后,将该脚本上传到hdfs文件系统下的’/user/wuying‘路径下,并运行该文件:

  因为我的脚步是存放在test文件夹下的,因此你记得到时候把文件上传到用户目录就好了~若是报错,请查看log信息,找到你的error,all is well~

  最后上一张成功执行的结果截图:

  好冷,下班咯,回家~

最后贴上以下链接供参考:

Apache pig 官方文档

IBM中文社区文档

错误参考

hadoop家族之pig入门的更多相关文章

  1. hadoop pig入门总结

    在这里贴一个pig源码的分析,做pig很长时间没做笔记,不包含任何细节,以后有机会再说吧 http://blackproof.iteye.com/blog/1769219 hadoop pig入门总结 ...

  2. 大数据架构师基础:hadoop家族,Cloudera产品系列等各种技术

    大数据我们都知道hadoop,可是还会各种各样的技术进入我们的视野:Spark,Storm,impala,让我们都反映不过来.为了能够更好的架构大数据项目,这里整理一下,供技术人员,项目经理,架构师选 ...

  3. hadoop家族学习路线图之hadoop产品大全

    大数据这个词也许几年前你听着还会觉得陌生,但我相信你现在听到hadoop这个词的时候你应该都会觉得“熟悉”!越来越发现身边从事hadoop开发或者是正在学习hadoop的人变多了.作为一个hadoop ...

  4. Hadoop学习笔记【Hadoop家族成员概述】

    Hadoop家族成员概述 一.Hadoop简介 1.1 什么是Hadoop? Hadoop是一个分布式系统基础架构,由Apache基金会所开发,目前Yahoo!是其最重要的贡献者. Hadoop实现了 ...

  5. Hadoop家族 路线图(转)

    主要介绍Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig, HBase, Sqoop, Mahout, Zookeeper, Avro, Ambari, Chukwa,新增加的项 ...

  6. Hadoop家族学习路线图--转载

    原文地址:http://blog.fens.me/hadoop-family-roadmap/ Sep 6, 2013 Tags: Hadoophadoop familyroadmap Comment ...

  7. Hadoop家族学习路线图

    主要介绍Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig, HBase, Sqoop, Mahout, Zookeeper, Avro, Ambari, Chukwa,新增加的项 ...

  8. Hadoop家族

    现在Hadoop家族产品,已经达到20个了之多. 有必要对自己的知识做一个整理了,把产品和技术都串起来.不仅能加深印象,更可以对以后的技术方向,技术选型做好基础准备. 本文为"Hadoop家 ...

  9. [转]Hadoop家族学习路线图

    Hadoop家族学习路线图 Hadoop家族系列文章,主要介绍Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig, HBase, Sqoop, Mahout, Zookeeper, ...

随机推荐

  1. Tomcat源码解读:ClassLoader的设计

    Tomcat是一个经典的web server,学习tomcat的源码对于我们是有很大的帮助的.前一段时间了解了tomcat的工作的大致流程,对我的新工作有了很大的帮助.刚学习了ClassLoader( ...

  2. C+命令行+方向键=简易版扫雷

    前言: 想起来做这个是因为那时候某天知道了原来黑框框里面的光标是可以控制的,而且又经常听人说起这个,就锻炼一下好了. 之前就完成了那1.0的版本,现在想放上来分享却发现有蛮多问题的,而且最重要的是没什 ...

  3. Redis安装和配置

    1.下载安装redis 在linux服务器上,命令行执行以下命令(cd ./usr local/src 一般源码放在这里(推荐源码安装)) wget http://download.redis.io/ ...

  4. C#编程普通型计算器 经验与感悟

    先贴图: 这是用C# 语言编写的普通型计算器,功能基本模仿Windows8自带计算器程序(版本6.3,内部版本9600).支持加.减.乘.除.退格.清除.平方根.倒数.相反数.连续四则.连续等号.自动 ...

  5. openwrt修改flash大小

    前言 默认openwrt trunk编译出来的flash大小为8M,但是我们手上的板子可能flash大小更大,本文以MT7620a为例,将其flash大小由8M修改为16M或者32M 增加dts文件 ...

  6. [转]C#编程总结(三)线程同步

    本文转自:http://www.cnblogs.com/yank/p/3227324.html 在应用程序中使用多个线程的一个好处是每个线程都可以异步执行.对于 Windows 应用程序,耗时的任务可 ...

  7. appium 常用api介绍(1)

    前言:android手机大家都很熟悉,操作有按键.触摸.点击.滑动等,各种操作方法可以通过api的方法来实现. 参考博文:http://blog.csdn.net/bear_w/article/det ...

  8. go 字符变量

    go语言变量定义 第一类,通过关键字var来声明,可以在main函数体外 // varStudy //变量在main函数体外声明 package main import ( "fmt&quo ...

  9. CSS样式----图文详解:css样式表和选择器

    主要内容 CSS概述 CSS和HTML结合的三种方式:行内样式表.内嵌样式表.外部样式表 CSS四种基本选择器:标签选择器.类选择器.ID选择器.通用选择器 CSS三种扩展选择器:组合选择器.后代选择 ...

  10. 用Access作为后台数据库支撑,书写一个用C#写入记录的案例

    具体的步骤: 1.创建并打开一个OleDbConnection对象 2.创建插入的SQL语句 3.创建一个OleDbCommand对象 4.使用OleDbCommand对象来插入数据 5.关闭OleD ...