hadoop之家族成员pig简介

程序员超时空 程序员超时空     2022-10-23     202

关键词:

Hadoop发展很快,Hadoop作为Apache的一个顶级项目旗下有许多的子项目,今天的内容就是简单的介绍一下Hadoop家族的子项目中的Pig。

下图是一个Hadoop子项目的大体结构图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-INUf7iRp-1662106189048)(http://172.18.3.4:8090/download/attachments/7736394/image2018-12-8%2010%3A6%3A54.png?version=1&modificationDate=1544234855000&api=v2)]

Pig简介

Pig是Hadoop数据操作的客户端是一个数据分析引擎,采用了一定的语法操作HDFS中的数据(Pig应该说是一种语言,有人说Pig是类SQL的语言我这里只能说它的功能类似Sql语言和数据库的关系,而且这里的Sql更像是PLSQL而不是标准SQL,Hadoop中更像标准Sql的应该是Hive或者叫HiveQL),它的语言比较像Shell脚本,可以嵌入Hadoop的JAVA程序中,从而达到简化代码的功能,Pig的脚本叫Pig Latin,之所以说Pig是一个数据分析引擎,是因为Pig相当于一个翻译器,将Pig Latin语句翻译成MapReduce程序,而Pig Latin语句是一种用于处理大规模数据的脚本语言。Pig Latin可完成排序(Order By)、过滤(Where)、求和(Sum)、分组(Group By)、关联(Join)等操作,支持自定义函数;Pig Latin是把类似Sql的语句转换成MapReduce过程进行处理,减少Java 代码的书写,Pig的运行方式有Grunt Shell方式,脚本方式和嵌入式方式。

Pig数据模型
Bag:表
Tuple:行,记录
Field:属性
Pig不要求同一个bag里面的各个tuple有相同数量或相同类型的field

下面用例子来说明Pig如何工作和工作模式的区别:

Pig查询例子:

Sql语句:select deptno,max(sal) from emp group by deptno;
Pig Latin语句:emp1 = group emp by deptno;
emp2 = foreach emp1 generate group,MAX(emp.sal)
dump emp2;

运行方式的例子:

1.Grunt shell方式

Grunt shell方式首先用pig命令启动,pig命令可以加参数“-x local”代表本地模式,或“-x mapreduce”代表mapreduce模式,默认mapreduce模式。本地模式:伪分布式模式下使用,MapReduce模式:全分布式下使用
    $ pig -x local
    $ pig
    $ pig -x mapreduce
  按行输入命令:
    grunt> A = load ‘/scott/emp.csv’ using PigStorage(‘:’);
    grunt> B = foreach A generate $0 as id;
    grunt> dump B;
    grunt> store B into ‘out’;
  其中,load ‘/scott/emp.csv’ using PigStorage(‘:’) Load 为加载数据路径“/scott/emp.csv”,PigStorage指定分隔符,不仅可以指定输入文件的分割符.而且还能用来指定输出文件个分割符,“dump B”表示在屏幕中显示结果,“store B into ‘out’”表示把结果输出到out文件/文件夹中。在local模式中,out文件写入到当前目录;mapreduce中,out文件夹则需要给出绝对路径。

2.Pig script方式
  script方式中,用pig命令启动,后面带要运行的.pig文件即可,如:
    $ pig -x local id.pig
    $ pig id.pig
    $ pig -x mapreduce id.pig

3.嵌入式方式

Java代码:

importjava.io.IOException;
import org.apache.pig.PigServer;
public class idmapreduce

public static void main(String[] args)
try
PigServer pigServer = new PigServer(“mapreduce”);
runIdQuery(pigServer, “passwd”);

catch(Exception e)


public static void runIdQuery(PigServer pigServer, String inputFile) throws IOException
pigServer.registerQuery(“A = load '” + inputFile + “’ using PigStorage(‘:’);”);
pigServer.registerQuery(“B = foreach A generate $0 as id;”);
pigServer.store(“B”, “idout”);

嵌入式方式运行与运行普通java类方式没有任何不同,如:
    java -cp .:/opt/hadoop/pig/pig-0.5.0-core.jar Idmapreduce

其中java -cp 表示编译jar包,后面紧跟生成的jar路径,空格后的为Main函数所在的类名称。

大数据hadoop入门之hadoop家族详解

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

大数据hadoop入门之hadoop家族详解

...词也许几年前你听着还会觉得陌生,但我相信你现在听到hadoop这个词的时候你应该都会觉得“熟悉”!越来越发现身边从事hadoop开发或者是正在学习hadoop的人变多了。作为一个hadoop入门级的新手,你会觉得哪些地方很难呢?运行... 查看详情

spring-boot-starter家族成员简介

以下应用程序starters是SpringBoot在org.springframework.boot组下提供的:名称描述spring-boot-starter核心SpringBootstarter,包括自动配置支持,日志和YAMLspring-boot-starter-actuator生产准备的特性,用于帮我们监控和管理应用spring-boot-starter-amqp对”... 查看详情

spring-boot-starter家族成员简介

下应用程序starters是SpringBoot在org.springframework.boot组下提供的:名称描述spring-boot-starter核心SpringBootstarter,包括自动配置支持,日志和YAMLspring-boot-starter-actuator生产准备的特性,用于帮我们监控和管理应用spring-boot-starter-amqp对”... 查看详情

clouderamanager简介

Hadoop家族整个Hadoop家族由以下几个子项目组成:HadoopCommon:Hadoop体系最底层的一个模块,为Hadoop各子项目提供各种工具,如:配置文件和日志操作等。HDFS:是Hadoop应用程序中主要的分布式储存系统,HDFS集群包含了一个NameNode(... 查看详情

javascript之--offset家族

  在javavscriprt中,有一些很有特点的家族,他们有的是因为浏览器的兼容问题而出名,有的是因为其重要的作用而出名,总之对这些pinyi家族的理解和解决他们的兼容性问题显得很是繁琐,这篇文章就是对家族成员之一offs... 查看详情

集合之集合的简介

...我们的的程序中到处充斥着集合类的身影!java中集合大家族的成员实在是太丰富了,有常用的ArrayList、HashMap、HashSet,也有不常用的Stack、Queue,有线程安全的Vector、HashTable,也有线程不安全的LinkedList、TreeMap等等!  &n 查看详情

hadoop入门容易吗?

hadoop入门容易吗?不是很容易,但是推荐一些Hadoop家族系列文章,主要介绍Hadoop家族产品,常用的项目包括Hadoop,Hive,Pig,HBase,Sqoop,Mahout,Zookeeper,Avro,Ambari,Chukwa,新增加的项目包括,YARN,Hcatalog,Oozie,Cassandra,Hama,Whirr,Flume,Bigtop,Crunch,Hue... 查看详情

Pig 和 Hadoop 连接错误

】Pig和Hadoop连接错误【英文标题】:PigandHadoopconnectionerror【发布时间】:2015-01-2106:44:25【问题描述】:我在mapreduce模式下运行pig时收到ConnectionRefused错误。详情:我已经从tarball(pig-0.14)安装了Pig,并在bashrc中导出了类路径。我... 查看详情

如何查看Hadoop上安装的pig版本

】如何查看Hadoop上安装的pig版本【英文标题】:HowtoseethepigversioninstalledonHadoop【发布时间】:2014-11-1307:30:18【问题描述】:我正在尝试检查我的hadoop上安装的PIG版本。我们如何才能看到Hadoop上安装的pig版本?有什么命令可以看到... 查看详情

hadoop之hbase简介

HBASE的发展从bigtable讲起bigtable是一个分布式存储系统利用mapreduce分布式并行计算模型处理海量数据使用分布式文系统GFS作为底层数据存储采用Chubby提供协同服务管理扩展到PB级别的数据和上千台机器,具有广泛应用性,可... 查看详情

使用 Hadoop-2.5.0 配置 Pig-0.12.1

】使用Hadoop-2.5.0配置Pig-0.12.1【英文标题】:ConfiguringPig-0.12.1withHadoop-2.5.0【发布时间】:2015-03-1215:59:11【问题描述】:我在$HADOOP_HOME有一个现有的Hadoop客户端(hadoop-0.20.2)。使用此版本的Hadoop,所有客户端配置文件都放置在以下目... 查看详情

pig@hadoop:使用多核处理没有 hdfs 的本地文件

】pig@hadoop:使用多核处理没有hdfs的本地文件【英文标题】:pig@hadoop:processinglocalfileswithouthdfswithmultiplecores【发布时间】:2015-07-2501:05:05【问题描述】:如果我在本地模式下运行pig@hadoop(因为我不想使用hdfs),那么它会以单线程... 查看详情

在 Hadoop/Pig 中使用匹配过滤

】在Hadoop/Pig中使用匹配过滤【英文标题】:FilteringwithMatchinginHadoop/Pig【发布时间】:2016-10-0319:44:16【问题描述】:我正在努力学习Hadoop/Pig并一直在AWS上工作,日期看起来像这样(每列包含不同的网站):<http://openean.kaufkauf.net... 查看详情

基于zookeeper的分步式队列系统集成案例

基于Zookeeper的分步式队列系统集成案例Hadoop家族系列文章,主要介绍Hadoop家族产品,常用的项目包括Hadoop,Hive,Pig,HBase,Sqoop,Mahout,Zookeeper,Avro,Ambari,Chukwa,新增加的项目包括,YARN,Hcatalog,Oozie,Cassandra,Hama,Whirr,Flume,Bigtop,Crunch,Hue等。从20 查看详情

记录主动泄漏到 Hadoop Pig 中?

】记录主动泄漏到HadoopPig中?【英文标题】:RecordsproactivelyspilledinHadoopPig?【发布时间】:2012-09-1122:37:24【问题描述】:我是Hadoop新手,对我的pig脚本中的命令行消息感到好奇。Totalrecordswritten:7676Totalbyteswritten:341396SpillableMemoryManag... 查看详情

Pig 何时使用 Hadoop MapReduce 环境?

】Pig何时使用HadoopMapReduce环境?【英文标题】:WhenexactlyPigusesHadoopMapReduceenvironment?【发布时间】:2012-08-3008:49:30【问题描述】:我对HadoopMapreduce和Pig环境有疑问。在thisthread中,我发现Pig拉丁语代码被Pig系统插入。首先我认为Pig... 查看详情

hadoop组件之-hdfs(ha实现细节)

NameNode高可用整体架构概述在Hadoop1.0时代,Hadoop的两大核心组件HDFSNameNode和JobTracker都存在着单点问题,这其中以NameNode的单点问题尤为严重。因为NameNode保存了整个HDFS的元数据信息,一旦NameNode挂掉,整个HDFS就无法访问,同时Hado... 查看详情