Hadoop Pig综合指南

1. Hadoop Pig 介绍

使用Apache Pig,可以分析大量数据,并将它们表示为数据流。 Apache Pig是对MapReduce的一种抽象。 我们将讨论Hadoop Pig的整个概念。 除了它的介绍外,它还包括历史,体系结构以及它的特征。 此外,我们将看到,Pig Vs Hive,Apache Pig Vs SQL和Hadoop Pig Vs MapReduce等一些比较。

2. Hadoop Pig 简介

Hadoop Pig是对MapReduce的一种抽象。可以分析大量数据,并将它们表示为数据流, 一般来说,在Hadoop中使用它。通过使用Pig,我们可以在Hadoop中执行所有数据操作。

此外,Pig还提供高级语言来编写数据分析程序,我们称之为Pig Latin。这种语言的主要优点之一是,它提供了众多的运算符。通过它们,程序员可以开发自己的函数来读取,写入和处理数据。

它具有以下关键属性,例如:

易于编程

利用支持的Pig Latin运算符,将所有由多个相互关联的数据转换组成的复杂任务被明确编码为数据流序列,这使得它们易于编写,理解和维护

自动优化

它允许用户专注于语义而不是效率,后台自动优化执行

可扩展性

用户可以创建自己的自定义函数

程序员可使用Pig Latin语言编写脚本来使用Apache Pig分析数据,所有这些脚本都内部转换为Map和Reduce任务。对于一个组件,我们称之为Pig Engine。它接受Pig Latin脚本作为输入,并将这些脚本进一步转换为MapReduce作业。

3.历史

Apache Pig是在2006年在雅虎开发的一个研究项目。基本上,要在创建的每个数据集上创建和执行MapReduce作业。 Pig于2007年开源。然后,Apache Pig首次发布于2008年。此外,Hadoop Pig在2010年作为Apache顶级项目发布。

4.为什么我们需要Apache Pig?

在执行任何MapReduce任务时,有一种情况是程序员不擅长Java, 因此,我们可以说,Pig对于所有这样的程序员来说都是一个合适的工具,因为:

无需在Java中输入复杂代码,使用Pig Latin,程序员就可以轻松执行MapReduce任务。

它还有助于缩短代码的长度,因为Pig使用多查询方法。让我们用一个例子来理解它。这里需要我们在Java中输入200行代码(LoC)的操作可以通过在Apache Pig中输入少于10个LoC来轻松完成。因此,它表明,Pig将开发时间缩短了近16倍。

当你熟悉SQL时,很容易学习Pig。因为Pig Latin是类似SQL的语言。

它提供了许多内置的运算符,以支持数据操作,如连接,过滤器,排序等等。此外,它提供了MapReduce中缺少的嵌套数据类型,如元组,Map和bag等。

5.可以在哪里使用Pig?

数据加载时间敏感。

另外,在处理各种数据源时。

需要通过抽样分析。

6.不适合使用Pig的地方?

数据完全没有结构化。如视频,音频和可读文本。

如果需要更多功能来优化和实现代码,Pig没有Mapreduce Java 编程灵活。

7. Hadoop Pig 的架构

下图片显示了Apache Pig的架构:

1542462471698795.png

Apache Pig框架中有几个组件。 我们来详细研究这些主要组件:

分析器 – Parser

所有的Pig脚本都由解析器处理。 解析器基本上检查脚本的语法,是否进行类型检查和其他语法检查等。 之后,Parser的输出将是一个DAG(有向无环图 directed acyclic graph),它代表Pig Latin语句以及逻辑运算符。

脚本的逻辑运算符表示为节点,数据流在DAG中表示为边(逻辑计划 logical plan)

优化 – Optimizer

逻辑计划(DAG)被传递给 Optimizer,它进一步进行逻辑优化,如projection和 push down。

编译器 – Compiler

编译器将优化的逻辑计划编译成一系列MapReduce作业。

执行引擎 – Execution Engine

所有MapReduce作业都按排序顺序提交给Hadoop。 最终,它在Hadoop上执行这些MapReduce作业并产生期望的结果。

8 Apache Pig的优点

减少开发时间

开发时需要更少的时间。 这是主要的优势之一。特别是考虑到 MapReduce作业的复杂性,花费时间和程序的维护。

简单易学

了解SQL的程序员,就可以编写Pig Latin来实现MapReduce作业。

程序过程语言

Apache Pig是一种非声明式的程序过程语言,与SQL不同。 可以轻松地遵循支持的命令。 在每一步数据转换中都清晰易懂。与MapReduce进行比较, 它非常简洁,不像Java,更像Python。

数据流

它是一种数据流语言。意味着所有的操作都是关于数据的, 数据转换是十分重要的。 不能创建没有数据的循环。核心就是需要始终转换和操纵数据。

易于控制执行

可以控制每一步的执行,本质上是程序性的。 直截了当。可以编写自己的UDF(用户定义函数)并注入Pipeline中的一个特定部分。

UDF

可以编写自己的UDF。

Lazy evaluation 延时执行

除非生成输出文件或输出任何消息,否则不会进行评估执行。这是逻辑执行计划的一个好处。可以优化整个程序脚本,并且优化器可以产生一个有效的执行计划。

Hadoop功能的使用

通过Pig,可以享受Hadoop提供的一切优点,比如并行化,容错性等,并且也可以具有许多关系数据库特性的功能。

对非结构化数据有效

Pig对非结构化和杂乱的大数据集非常有效。基本上,Pig是使大型非结构化数据结构化的最佳工具之一。

Base Pipeline

如果想要并行化执行并用于大量数据的UDF。可以使用Pig作为基础管道,首先完成计算量大的工作。只是在我们想要的步骤中应用我们的UDF即可。

处理各种数据

Pig一般分析各种数据。 包括结构化的和非结构化的。 此外,它将结果存储在HDFS中。

9.学习Pig之前的所需技能

Linux操作系统基础知识

基本的编程技巧

10. Pig 与MapReduce

Hadoop Pig和MapReduce之间的一些主要差异是:

Apache Pig

它是一种数据流语言。

MapReduce

是一种大数据处理和计算框架。

Hadoop Pig

是一种高级语言;

在Apache Pig中,执行Join操作非常简单。

在MapReduce中,在数据集之间执行Join操作相当困难。

Pig:

有了SQL的基本知识,任何新手程序员都可以方便地使用Pig。

要使用MapReduce,需要熟悉Java.

Hadoop Pig

一般来说,它使用多查询方法,从而在很大程度上减少了代码的长度。

MapReduce, 为了执行相同的任务,它需要的行数增加了近20倍。

Hadoop Pig

不需要任何汇编。在执行时,每个Pig操作符都会在内部转换为MapReduce作业。

MapReduce有一个很长的编译过程

11. Hadoop Pig VS SQL

下面是Apache Pig和SQL之间的主要区别:

Pig是一种程序语言.

SQL

是一种声明性语言。

Pig

数据结构模式是可选的。 尽管没有确切的数据结构模式,可以存储数据。 它将值存储为$ 01,$ 02等。提供运算符执行ETL(提取,转换和加载)等功能

SQL

在SQL中,Schema是强制性的。

12. Apache Pig Vs Hive

为了创建MapReduce作业,可以使用Pig和Hive。 另外,我们可以说,有时候,Hive和PIG一样在HDFS上运行。 下面是一些不同的地方:

Hadoop Pig

Pig Latin是一种语言,Apache Pig使用。 最初,它是雅虎创建的。

Hive

HiveQL是一种语言,Hive使用。 它最初是Facebook创建的。

Pig

它是一种数据流语言。

Hive

而它是一种查询处理语言。

 Pig

可以处理结构化,非结构化和半结构化的数据。

Hive

主要用于结构化数据。

13.Pig的应用

什么场景下,适合选择Pig处理大数据呢?通常是为了执行涉及临时处理和快速原型设计的任务,数据科学家通常使用Apache Pig。 更多的应用是:

为了处理像weblogs这样的庞大数据源。

为搜索平台执行数据处理。

处理时间敏感的数据加载。

Hadoop Pig综合指南

发表评论

邮箱地址不会被公开。 必填项已用*标注

九 ÷ 1 =

滚动到顶部