📅  最后修改于: 2020-12-02 05:29:03             🧑  作者: Mango
Apache Pig是MapReduce的抽象。它是一个工具/平台,用于分析将它们表示为数据流的较大数据集。 Pig通常与Hadoop一起使用;我们可以使用Apache Pig在Hadoop中执行所有数据操作操作。
为了编写数据分析程序,Pig提供了一种称为Pig Latin的高级语言。该语言提供了各种运算符,程序员可以使用它们来开发自己的函数来读取,写入和处理数据。
要使用Apache Pig分析数据,程序员需要使用Pig Latin语言编写脚本。所有这些脚本都在内部转换为Map和Reduce任务。 Apache Pig具有称为Pig Engine的组件,该组件接受Pig Latin脚本作为输入并将这些脚本转换为MapReduce作业。
不太擅长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 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之间的主要区别。
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-
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-
2006年,Apache Pig作为Yahoo的研究项目而开发,尤其是在每个数据集上创建和执行MapReduce作业。 2007年,Apache Pig通过Apache孵化器开源。 2008年,Apache Pig的第一个版本问世。 2010年,Apache Pig毕业于Apache顶级项目。