设为首页 收藏本站
查看: 591|回复: 0

[经验分享] hadoop应用-pig

[复制链接]

尚未签到

发表于 2015-7-14 07:52:00 | 显示全部楼层 |阅读模式
第1章 引言
1.1 编写目的
  介绍pig,一个不得不说的hadoop的扩展。
1.2 什么是pig
  Pig是一个基于Hadoop的大规模数据分析平台,它提供的SQL-LIKE语言叫Pig Latin,该语言的编译器会把类SQL的数据分析请求转换为一系列经过优化处理的MapReduce运算。Pig为复杂的海量数据并行计算提供了一个简单的操作和编程接口。
1.3 pig的特点
  1、专注于于大量数据集分析(ad-hoc analysis , ad-hoc 代表:a solution that has been custom designed for a specific problem );
      2、运行在集群的计算架构上,Yahoo Pig 提供了多层抽象,简化并行计算让普通用户使用;这些抽象完成自动把用户请求queries翻译成有效的并行评估计划,然后在物理集群上执行这些计划;
     3、提供类似 SQL 的操作语法;
     4、开放源代码;
1.4 pig的主要用户
  1、yahoo
  2、twitter
1.5 关于pig和hive
  对于开发人员,直接使用Java APIs可能是乏味或容易出错的,同时也限制了Java程序员在Hadoop上编程的运用灵活性。于是Hadoop提供了两个解决方案,使得Hadoop编程变得更加容易。
  ·Pig是一种编程语言,它简化了Hadoop常见的工作任务。Pig可加载数据、表达转换数据以及存储最终结果。Pig内置的操作使得半结构化数据变得有意义(如日志文件)。同时Pig可扩展使用Java中添加的自定义数据类型并支持数据转换。
  ·Hive在Hadoop中扮演数据仓库的角色。Hive添加数据的结构在HDFS(hive superimposes structure on data in HDFS),并允许使用类似于SQL语法进行数据查询。与Pig一样,Hive的核心功能是可扩展的。
  Pig和Hive总是令人困惑的。Hive更适合于数据仓库的任务,Hive主要用于静态的结构以及需要经常分析的工作。Hive与SQL相似促使 其成为Hadoop与其他BI工具结合的理想交集。Pig赋予开发人员在大数据集领域更多的灵活性,并允许开发简洁的脚本用于转换数据流以便嵌入到较大的应用程序。Pig相比Hive相对轻量,它主要的优势是相比于直接使用Hadoop Java APIs可大幅削减代码量。正因为如此,Pig仍然是吸引大量的软件开发人员。
  


第2章 安装pig
2.1 下载pig
  下载pig的最新版本:
  http://www.apache.org/dyn/closer.cgi/pig
  我下载的是pig-0.10.0.tar.gz  
2.2 安装pig
  解压缩
  tar zxvf pig-0.10.0.tar.gz
  进入目录
  cd pig-0.10.0
  注意,pig是hadoop的工具,所以不需要修改原hadoop的配置。
  将pig加入到环境变量中:
  输入
  cd ~
  进入到用户主目录
  vi .bashrc
  最下边加入环境变量的配置
  保存然后执行
  . .bashrc
  输入 pig -help进行测试,如果设置成功,则出现如下界面
DSC0000.png
  如果想获取pig的源码,可以使用svn下载
  http://svn.apache.org/repos/asf/pig/trunk
2.3 配置hadoop
  进入目录$PIG_HOME/conf
  修改配置文件,在pig.properties中加入
  fs.default.name=hdfs://localhost:9000
  mapred.job.tracker=localhost:9001
  指向本地伪分布式的hdfs和mapreduce
  在本地运行pig
  pig -x local
  得到如下界面
DSC0001.png
  和hadoop一起运行
  直接输入pig或者pig -x mapreduce
  有可能出现下面的错误
  Cannot find hadoop configurations in classpath (neither hadoop-site.xml nor core-site.xml was found in the classpath).
  需要配置~/.bashrc或者/etc/profile,建议配置.bashrc文件,加入
  export HADOOP_HOME=/home/hadoop/hadoop-1.0.3
  export PIG_CLASSPATH=$HADOOP_HOME/conf
  配置完成后可正常进入
  
  
  
  
第3章 grunt shell
3.1 基本命令
  Quit 退出grunt
  kill hadoopID 终止正在运行的hadoop进程
  set debug on 打开debug级别
  使用命令包括:
  help,quit,kill jobid,set debug [on|off],set job.name ‘jobname’
  文件命令包括:
  cat,cd,copyFromLocal,copyToLocal,cp,ls,mkdir,mv,pwd,rm,rmf,exec,run
3.2 查询测试
  到安装目录下找到/tutorial/data/excite-sall.log文件,数据分为3列,按制表符分隔,第一列为用户ID,第二列为Unix时间戳,第三列为查询记录。
  输入如下语句:
  grunt> log = LOAD 'tutorial/data/excite-small.log' AS (user,time,query);
  将数据装载到一个称为log的别名中。
  查询返回4个元组并显示:
  grunt> lmt = LIMIT log 4;
  grunt> DUMP lmt;
  得到结果:
DSC0002.png
  PIG中的读写操作:
  LOAD
  从文件装载数据到一个关系
  LIMIT
  限制元组个数为n
  DUMP
  显示一个关系的内容,主要用于调试
  STORE
  将一个关系中的数据存储到一个目录中
  输入执行:
  grunt> log = LOAD '/home/lgstar888/hadoop/pig-0.10.0/tutorial/data/excite-small.log' AS (user:chararray,time:long,query:chararray);
  grunt> grpd = GROUP log BY user;
  grunt> cntd = FOREACH grpd GENERATE group,COUNT(log);
  grunt> STORE cntd INTO 'output';
  用于统计每个用户查询发起的个数
  使用grunt> DESCRIBE log;
  查看schema
  log: {user: chararray,time: long,query: chararray}
  pig中的诊断运算符:
  DESCRIBE alias;
  显示一个关系的schema
  EXPLAIN
  显示用于计算一个关系的执行计划
  ILLUSTRATE alias
  逐步显示数据如何被转换
  AVG
  求平均值
  CONCAT
  连接两个字符串
  COUNT
  计算一个包中的元组个数
  DIFF
  比较一个元组中的两个字段
  MAX
  计算在一个单列包中的最大值
  MIN
  计算在一个单列包中的最小值
  SIZE
  计算元素的个数
  SUM
  计算在一个单列包中的数值的总和
  IsEmpty
  检查一个包是否为空
  更多的相关的使用与配置已整理到
  http://code.google.com/p/mycloub/

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-86353-1-1.html 上篇帖子: 【原】centos6.5下hadoop cdh4.6 安装 下篇帖子: hadoop-1.1.2 在Windows环境下的部署
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表