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

[经验分享] Pig安装及简单使用(pig0.12.0 hadoop2.2.0)

[复制链接]

尚未签到

发表于 2018-10-31 09:04:21 | 显示全部楼层 |阅读模式
我们用MapReduce进行数据分析。当业务比较复杂的时候,使用MapReduce将会是一个很复杂的事情,比如你需要对数据进行很多预处理或转换,以便能够适应MapReduce的处理模式,另一方面,编写MapReduce程序,发布及运行作业都将是一个比较耗时的事情。
  Pig的出现很好的弥补了这一不足。Pig能够让你专心于数据及业务本身,而不是纠结于数据的格式转换以及MapReduce程序的编写。本质是上来说,当你使用Pig进行处理时,Pig本身会在后台生成一系列的MapReduce操作来执行任务,但是这个过程对用户来说是透明的。
Pig的安装
  Pig作为客户端程序运行,即使你准备在Hadoop集群上使用Pig,你也不需要在集群上做任何安装。Pig从本地提交作业,并和Hadoop进行交互。
  1)下载Pig
  前往http://mirror.bit.edu.cn/apache/pig/ 下载合适的版本,比如Pig 0.12.0
  2)解压文件到合适的目录
  tar –xzf pig-0.12.0
  3)设置环境变量
  export PIG_HOME=/home/hadoop/pig
  export PATH=$PATH:$PIG_HOME/bin
  如果没有设置JAVA环境变量,此时还需要设置JAVA_HOME,比如:
  export JAVA_HOME=/usr/local/jdk1.7.0_51
  4)验证
  执行以下命令,查看Pig是否可用:
  pig –help
Pig执行模式
  Pig有两种执行模式,分别为:
  1)本地模式(Local)
  本地模式下,Pig运行在单一的JVM中,可访问本地文件。该模式适用于处理小规模数据或学习之用。
  运行以下命名设置为本地模式:
  pig –x local
  2) MapReduce模式
  在MapReduce模式下,Pig将查询转换为MapReduce作业提交给Hadoop(可以说群集,也可以说伪分布式)。
  应该检查当前Pig版本是否支持你当前所用的Hadoop版本。某一版本的Pig仅支持特定版本的Hadoop,你可以通过访问Pig官网获取版本支持信息。
  Pig会用到HADOOP_HOME环境变量。如果该变量没有设置,Pig也可以利用自带的Hadoop库,但是这样就无法保证其自带肯定库和你实际使用的HADOOP版本是否兼容,所以建议显式设置HADOOP_HOME变量。且还需要设置如下变量:
  export PIG_CLASSPATH=$HADOOP_HOME/etc/hadoop
  下一步,需要告诉Pig它所用Hadoop集群的Namenode和Jobtracker。
  修改pig.properties文件增加如下参数
  #namenode
  fs.default.name=hdfs://hadoop-master.xx.com/:8020
  #jobtracker
  mapred.job.tracker=hadoop-master.xx.com:8021
  #mapreduce任务queue指定用户名
  mapred.job.queue.name=erpmerge
  #日志修改配置到当前程序目录下
  pig.logfile=/home/hadoop/pig/logs
  一般情况下,正确安装配置Hadoop后,这些配置信息就已经可用了,不需要做额外的配置。
  Pig默认模式是mapreduce,你也可以用以下命令进行设置:
  pig –x mapreduce
运行Pig程序
  Pig程序执行方式有三种:
  1)脚本方式
  直接运行包含Pig脚本的文件,比如以下命令将运行本地scripts.pig文件中的所有命令:
  pig scripts.pig
  2) Grunt方式
  Grunt提供了交互式运行环境,可以在命令行编辑执行命令。
  Grund同时支持命令的历史记录,通过上下方向键访问。
  Grund支持命令的自动补全功能。比如当你输入a =foreach b g时,按下Tab键,则命令行自动变成a = foreach b generate。你甚至可以自定义命令自动补全功能的详细方式。具体请参阅相关文档。
  3)嵌入式方式
  可以在java中运行Pig程序,类似于使用JDBC运行SQL程序。
  Pig Latin编辑器
  PigPen是一个Ecliipse插件,它提供了在Eclipse中开发运行Pig程序的常用功能,比如脚本编辑、运行等。下载地址:http://wiki.apache.org/pig/PigPen
  其他一些编辑器也提供了编辑Pig脚本的功能,比如vim等。
简单使用
  我们以查找最高气温为例,演示如何利用Pig统计每年的最高气温。假设数据文件内容如下(每行一个记录,tab分割):
  1990 21
  1990 18
  1991 21
  1992 30
  1992 999
  1990 23
  以local模式进入pig,依次输入以下命令(注意以分号结束语句):
  records = load ‘/home/adoop/input/temperature1.txt’as (year: chararray,temperature: int);
  dump records;
  describe records;
  valid_records = filter records bytemperature!=999;
  grouped_records = group valid_records byyear;
  dump grouped_records;
  describe grouped_records;
  max_temperature = foreach grouped_recordsgenerate group,MAX(valid_records.temperature);
  --备注:valid_records是字段名,在上一语句的describe命令结果中可以查看到group_records的具体结构。
  dump max_temperature;
  最终结果为:
  (1990,23)
  (1991,21)
  (1992.30)
  注意:
  1)如果你运行Pig命令后报错,且错误消息中包含如下信息:
  WARN org.apache.pig.backend.hadoop20.PigJobControl- falling back to defaultJobCo)ntrol (not using hadoop 0.20 ?)
  java.lang.NoSuchFieldException:runnerState
  则可能你的Pig版本和Hadoop版本不兼容。此时可重新针对特定Hadoop版本进行编辑。下载源代码后,进入源代码根目录,执行以下命令:
  ant clean jar-withouthadoop-Dhadoopversion=23
  注意:版本号是根据具体Hadoop而定,此处23可用于Hadoop2.2.0。
  2)Pig同一时间只能工作在一种模式下,比如以MapReduce模式进入后,只能读取HDFS文件,如果此时你用load 读取本地文件,将会报错。


运维网声明 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-628751-1-1.html 上篇帖子: HADOOP基本操作命令大全 下篇帖子: hadoop完全分布式安装记录_部分
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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