📜  Apache Pig-概述

📅  最后修改于: 2020-12-02 05:29:03             🧑  作者: Mango


什么是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使用多查询方法,从而减少了代码长度。例如,只需在Apache Pig中键入少于10个LoC即可轻松完成需要在Java中键入200行代码(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 MapReduce
Apache Pig is a data flow language. MapReduce is a data processing paradigm.
It is a high level language. MapReduce is low level and rigid.
Performing a Join operation in Apache Pig is pretty simple. It is quite difficult in MapReduce to perform a Join operation between datasets.
Any novice programmer with a basic knowledge of SQL can work conveniently with Apache Pig. Exposure to Java is must to work with MapReduce.
Apache Pig uses multi-query approach, thereby reducing the length of the codes to a great extent. MapReduce will require almost 20 times more the number of lines to perform the same task.
There is no need for compilation. On execution, every Apache Pig operator is converted internally into a MapReduce job. MapReduce jobs have a long compilation process.

Apache Pig与SQL

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

Pig SQL
Pig Latin is a procedural language. SQL is a declarative language.
In Apache Pig, schema is optional. We can store data without designing a schema (values are stored as $01, $02 etc.) Schema is mandatory in SQL.
The data model in Apache Pig is nested relational. The data model used in SQL is flat relational.
Apache Pig provides limited opportunity for Query optimization. There is more opportunity for query optimization in SQL.

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

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

阿帕奇猪与蜂巢

Apache Pig和Hive均用于创建MapReduce作业。在某些情况下,Hive以与Apache Pig相似的方式在HDFS上运行。在下表中,我们列出了一些使Apache Pig与Hive脱颖而出的重要方面。

Apache Pig Hive
Apache Pig uses a language called Pig Latin. It was originally created at Yahoo. Hive uses a language called HiveQL. It was originally created at Facebook.
Pig Latin is a data flow language. HiveQL is a query processing language.
Pig Latin is a procedural language and it fits in pipeline paradigm. HiveQL is a declarative language.
Apache Pig can handle structured, unstructured, and semi-structured data. Hive is mostly for structured data.

Apache Pig的应用

数据科学家通常使用Apache Pig来执行涉及即席处理和快速原型制作的任务。使用Apache Pig-

  • 处理大量数据源,例如Web日志。
  • 对搜索平台执行数据处理。
  • 处理时间敏感的数据加载。

阿帕奇猪–历史

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