Apache Pig – 概述

Apache Pig – 概述


什么是阿帕奇猪?

Apache Pig 是对 MapReduce 的抽象。它是一个工具/平台,用于分析更大的数据集,将它们表示为数据流。Pig 通常与Hadoop 一起使用我们可以使用 Apache Pig 在 Hadoop 中执行所有数据操作操作。

为了编写数据分析程序,Pig 提供了一种称为Pig Latin的高级语言该语言提供了各种运算符,程序员可以使用这些运算符开发自己的读取、写入和处理数据的功能。

要使用Apache Pig分析数据,程序员需要使用 Pig Latin 语言编写脚本。所有这些脚本都在内部转换为 Map 和 Reduce 任务。Apache Pig 有一个称为Pig Engine的组件,它接受 Pig Latin 脚本作为输入并将这些脚本转换为 MapReduce 作业。

为什么我们需要 Apache Pig?

不太擅长 Java 的程序员通常在使用 Hadoop 时遇到困难,尤其是在执行任何 MapReduce 任务时。Apache Pig 是所有此类程序员的福音。

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

  • Apache Pig 使用多查询方式,从而减少代码长度。例如,需要您在 Java 中键入 200 行代码 (LoC) 的操作可以通过在 Apache Pig 中键入少至 10 LoC 来轻松完成。最终,Apache Pig 将开发时间缩短了近 16 倍。

  • Pig Latin 是类SQL 语言,熟悉 SQL 后很容易学习 Apache Pig。

  • Apache Pig 提供了许多内置操作符来支持数据操作,如连接、过滤器、排序等。此外,它还提供嵌套数据类型,如 MapReduce 中缺少的元组、包和映射。

猪的特点

Apache Pig 具有以下功能 –

  • 丰富的运算符集– 它提供了许多运算符来执行连接、排序、过滤器等操作。

  • 易于编程– Pig Latin 类似于 SQL,如果您擅长 SQL,则很容易编写 Pig 脚本。

  • 优化机会– Apache Pig 中的任务会自动优化其执行,因此程序员只需关注语言的语义。

  • 可扩展性– 使用现有的运算符,用户可以开发自己的功能来读取、处理和写入数据。

  • UDF 的– Pig 提供了在其他编程语言(如 Java)中创建用户定义函数的工具,并将它们调用或嵌入到 Pig 脚本中。

  • 处理各种数据– Apache Pig 分析各种结构化和非结构化数据。它将结果存储在 HDFS 中。

Apache Pig 与 MapReduce

下面列出了 Apache Pig 和 MapReduce 之间的主要区别。

Apache Pig 映射简化
Apache Pig is a data flow language. MapReduce 是一种数据处理范式。
It is a high level language. MapReduce 是低级和刚性的。
Performing a Join operation in Apache Pig is pretty simple. 在 MapReduce 中执行数据集之间的 Join 操作非常困难。
Any novice programmer with a basic knowledge of SQL can work conveniently with Apache Pig. 要使用 MapReduce,必须接触 Java。
Apache Pig uses multi-query approach, thereby reducing the length of the codes to a great extent. MapReduce 将需要几乎 20 倍以上的行数来执行相同的任务。
There is no need for compilation. On execution, every Apache Pig operator is converted internally into a MapReduce job. MapReduce 作业的编译过程很长。

Apache Pig 与 SQL

下面列出了 Apache Pig 和 SQL 之间的主要区别。

Pig SQL
Pig Latin is a procedural language. SQL 是一种声明性语言。
In Apache Pig, schema is optional. We can store data without designing a schema (values are stored as $01, $02 etc.) Schema 在 SQL 中是强制性的。
The data model in Apache Pig is nested relational. SQL 中使用的数据模型是平面关系
Apache Pig provides limited opportunity for Query optimization. 在 SQL 中有更多的查询优化机会。

除了上述差异之外,Apache Pig Latin –

  • 允许在管道中拆分。
  • 允许开发人员将数据存储在管道中的任何位置。
  • 声明执行计划。
  • 提供运算符来执行 ETL(提取、转换和加载)功能。

Apache Pig 与 Hive

Apache Pig 和 Hive 都用于创建 MapReduce 作业。在某些情况下,Hive 以与 Apache Pig 类似的方式在 HDFS 上运行。在下表中,我们列出了将 Apache Pig 与 Hive 区分开来的几个重要点。

Apache Pig 蜂巢
Apache Pig uses a language called Pig Latin. It was originally created at Yahoo. Hive 使用一种称为HiveQL的语言它最初是在Facebook创建的
Pig Latin is a data flow language. HiveQL 是一种查询处理语言。
Pig Latin is a procedural language and it fits in pipeline paradigm. HiveQL 是一种声明性语言。
Apache Pig can handle structured, unstructured, and semi-structured data. Hive 主要用于结构化数据。

Apache Pig 的应用

数据科学家通常使用 Apache Pig 来执行涉及临时处理和快速原型设计的任务。使用 Apache Pig –

  • 处理网络日志等海量数据源。
  • 为搜索平台执行数据处理。
  • 处理时间敏感的数据加载。

Apache Pig – 历史

2006年,Apache的猪是发展成为雅虎的一个研究项目,特别是建立和每个数据集执行MapReduce作业。2007年,Apache的猪是通过开放Apache孵化器采购。2008年,Apache的猪的第一个版本出来。2010,Apache的猪毕业作为Apache顶级项目。

觉得文章有用?

点个广告表达一下你的爱意吧 !😁