Pig-基础信息介绍
更新时间 2021-09-07 18:30:09    浏览 0   

TIP

本文主要是介绍 Pig-基础知识 。

# Pig-基础介绍

# 一、Pig是什么

Pig是Apache项目的一个子项目,Pig提供了一个支持大规模数据分析的平台。Pig包括用来描述数据分析程序的高级程序语言,以及对这些程序进行评估的基础结构。Pig突出的特点就是它的结构经得起大量并行任务的检验,这使得它能够处理大规模数据集。

目前Pig的基础结构层包括一个产生MapReduce程序的编译器。Pig的语言层包括一个叫做PigLatin的文本语言,它具有以下几个特征:

易于编程:实现简单的和高度并行的数据分析任务非常容易。由相互关联的数据转换实例所组成的复杂任务被明确地编码为数据流,这是他们的编写更加容易,同时也更容易理解和维护。

自动优化:任务编码的方式允许系统自动去优化执行过程,从而使用户能够专注于语义,而非效率。

可扩展性:用户可以轻松编写自己的函数来进行特殊用途的处理。

# 二、Pig运行模式

Pig有两种运行模式:Local模式和MapReduce模式。当Pig在Local模式运行时,只能访问本地一台主机,当Pig在MapReduce模式运行时,它将访问一个Hadoop集群和HDFS的安装位置。这是Pig将自动地对这个集群进行分配和回收。因为Pig可以自动的对MapReduce程序进行优化,所以当用户使用Pig Latin语言进行编程时候,可以不必关心程序的运行效率,Pig系统将会自动地对程序进行优化,这样能够节省大量用户的编程时间。

Local模式:适用于用户对程序进行调试,因为Local模式下Pig只能访问本地一台主机,他可以在短时间内处理少量的数据,这样用户不必关心Hadoop系统对整个集群的控制,这样既能让用户使用Pig的功能,又不至于在集群的管理上花费太多的时间。

MapReduce模式:Pig需要把真正的查询转换成相应的MapReduce作业,并提交到Hadoop集群去运行(集群可以使真实的分布,也可以是伪分布)。

Pig的Local和MapReduce模式都有3种运行方式,分别是:Grunt Shell方式、脚本文件方式和嵌入式程序方式。

# 三、PigLatin语言

Pig Latin语言与传统的关系数据库中的数据库操作语言非常类似。但是Pig Latin语言更侧重于对数据的查询和分析,而不是对数据进行修改和删除等的操作。另外,由于PigLatin可以在Hadoop的分布式的云平台上运行,它的这个特点可以让其具有其它数据库无法比拟的速度优势,能够在短时间内处理海量的数据。例如,处理系统日志文件、处理大型数据库文件、处理特定Web数据等。

除此之外,我们在使用Pig Latin语言编写程序的时候,不必关心如何让程序能够更好的在Hadoop平台上运行,因为这些任务都是由Pig系统自行分配的,不需要程序员参与。因此,程序员只需要专注于程序的编写,这样大大减轻了程序员的负担。

Pig Latin是这样的一个操作:通过对关系进行处理产生另外一组关系。Pig Latin语言在书写一条语句的时候能够跨越多行,但是必须以半角的分号来结束。

Pig Latin语言通常按照下面的流程来编写:

(1)、通过一条LOAD语句从文件系统中读取数据;

(2)、通过一系列转换语句对数据进行处理;

(3)、通过一条STORE语句把处理结果输出到文件系统中,或者使用一条DUMP语句把处理结果输出在屏幕上。

LOAD和STORE语句有严格的语法规定,用户很容易就能掌握,关键是如何灵活的使用转换语句对数据进行处理。

# 四、PigLatin的数据模式

Pig Latin中的数据组织形式包括:关系(relation)、包(bag)、元组(tuple)和域(field)。

一个关系可以按照如下方式定义:

一个关系就是一个包(更具体的说,是一个外部包)

包是元组的集合

元组是域的有序集合

域是一个数据块

一个Pig关系是一个由元组组成的包,Pig中的关系和关系型数据库中的表(table)很相似,包中的元组相当于行,但是和关系表不同的是,Pig中不需要每一个元组包含相同数目或相同位置的域,也不需要具有相同的数据类型。

关系是无序的,这就意味着Pig不能保证元组是按特定的顺序来执行的。

# 五、Pig和数据库的区别

1)、Pig Latin是面向数据流的编程方式,而SQL是一种描述型编程语言。我们以前学习SQL的时候经常听到过这样一句话:用SQL,你只需要告诉它你需要什么,具体怎么做交给SQL就行了。而Pig Latin是需要你一步一步根据数据流的处理方式来编程的,也就是说你要设计数据流的每一个步骤,有点类似SQL的查询规划器。

2)、传统的关系数据库(RDBMS)需要你预先定义表结构(模式),所有的数据处理都是基于这些有着严格格式的表数据。而Pig则不需要这样,你可以在运行时动态定义模式。本质上来说,Pig可以处理任何格式的元组。一般情况下,Pig的数据来源是文件系统,比如HDFS,而RDBMS的数据是存储在数据库中 的。(备注:关于元组的概念,基本和Python中的touple是差不多的)

3)、Pig支持比较复杂的,比如嵌套结构的数据处理。这种特殊的处理能力加上UDF(用户自定义函数)使得Pig具有更好的可定制型。

4)、 一些RDBMS特有的特性是Pig所没有的,比如事务处理和索引。Pig和MapReduce一样,是基于批量的流式写操作。

# 六、Pig和Hive

Hive和Pig是hadoop之上的两个数据查询和处理的工具。Hive的语法与SQL很像。Pig是一种处理数据的脚本语言。如果不用Hive和 Pig之类的工具,而是用Hodoop上的原生态的Java的来查数据的话,开发效率比较低。一个简单的sql需要写一页代码。

Pig是一种编程语言,它简化了Hadoop常见的工作任务。Pig可加载数据、表达转换数据以及存储最终结果。Pig内置的操作使得半结构化数据变得有意义(如日志文件)。同时Pig可扩展使用Java中添加的自定义数据类型并支持数据转换。

HIVE介于Pig和传统的RDBMS之间,和Pig一样,Hive也被设计为HDFS作为存储,但是他们之间有着显著的区别。Hive的查询语言HiveQL,是基于SQL的。任何熟悉SQL的人都可以轻松使用HiveQL写查询。和RDBMS相同。Hive要求所有数据必须存储在表中,表必须有模式,而模式由Hive进行管理。但是Hive允许为预先存在于HDFS的数据关联一个模式。所以,数据的加载步骤是可选的。

和Pig一样,Hive也不支持低时延查询。

# 参考文章

  • https://blog.csdn.net/baolibin528/article/details/39783025
更新时间: 2021-09-07 18:30:09
  0
手机看
公众号
讨论
左栏
全屏
上一篇
下一篇
扫一扫 手机阅读
可分享给好友和朋友圈