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 行代码即可轻松完成。最终,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 是一种数据流语言。 MapReduce 是一种数据处理范例。
它是一种高级语言。 MapReduce 是低级且僵化的。
在 Apache Pig 中执行 Join 操作非常简单。 在MapReduce中执行数据集之间的Join操作是相当困难的。
任何具有 SQL 基本知识的新手程序员都可以轻松地使用 Apache Pig。 要使用 MapReduce,必须接触 Java。
Apache Pig采用多查询的方式,从而很大程度上减少了代码的长度。 MapReduce 执行相同任务将需要几乎 20 倍的行数。
不需要编译。在执行时,每个 Apache Pig 运算符都会在内部转换为 MapReduce 作业。 MapReduce作业有一个漫长的编译过程。

Apache Pig 与 SQL

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

SQL
Pig Latin 是一种过程语言。 SQL 是一种声明性语言。
在 Apache Pig 中,模式是可选的。我们可以在不设计模式的情况下存储数据(值存储为 $01、$02 等) 模式在 SQL 中是必需的。
Apache Pig 中的数据模型是嵌套关系型的 SQL 中使用的数据模型是平面关系型的
Apache Pig 为查询优化提供了有限的机会。 SQL 中有更多查询优化的机会。

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

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

Apache Pig与蜂巢

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

Apache Pig 蜂巢
Apache Pig 使用一种称为Pig Latin的语言。它最初是在雅虎创建的。 Hive 使用一种称为HiveQL的语言。它最初是在Facebook创建的。
Pig Latin 是一种数据流语言。 HiveQL 是一种查询处理语言。
Pig Latin 是一种过程语言,它适合管道范式。 HiveQL 是一种声明性语言。
Apache Pig 可以处理结构化、非结构化和半结构化数据。 Hive 主要用于结构化数据。

Apache Pig 的应用

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

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

Apache Pig——历史

2006 年,Apache Pig 被开发为雅虎的一个研究项目,特别是在每个数据集上创建和执行 MapReduce 作业。2007,Apache Pig通过Apache孵化器开源。2008,Apache Pig的第一个版本问世。2010年,Apache Pig作为Apache顶级项目毕业。