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顶级项目。