Apache Pig是MapReduce的抽象.它是一个工具/平台,用于分析表示数据流的较大数据集.猪通常与 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使用多查询方法,从而减少了码.例如,要求您在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脚本.
优化机会&minus ; Apache Pig中的任务会自动优化它们的执行,因此程序员只需要关注语言的语义.
可扩展性&minus ;使用现有的运算符,用户可以开发自己的函数来读取,处理和写入数据.
UDF的 : Pig提供了用其他编程语言(如Java)创建用户定义函数的工具,并调用或嵌入Pig Scripts中.
处理各种数据 : Apache Pig分析各种数据,包括结构化数据和非结构化数据.它将结果存储在HDFS中.
下面列出了主要内容Apache Pig和MapReduce之间的差异.
Apache Pig | MapReduce |
---|---|
Apache Pig是一种数据流语言. | MapReduce是一种数据处理范例. |
这是一种高级语言. | MapReduce是低水平且严格的. |
在Apache Pig中执行连接操作非常简单. | MapReduce在数据集之间执行连接操作非常困难. |
任何具有SQL基础知识的新手程序员都可以方便地使用Apache Pig. | 必须使用Java的曝光MapReduce. |
Apache Pig使用多曲ery方法,从而在很大程度上减少了代码的长度. | MapReduce将需要几乎20倍的行数来执行相同的任务. |
无需编译.执行时,每个Apache Pig操作符都在内部转换为MapReduce作业. | MapReduce作业的编译过程很长. |
下面列出了Apache Pig和SQL之间的主要区别.
Pig | SQL |
---|---|
Pig Latin是一个程序语言. | SQL是声明性语言. |
在Apache Pig中,架构是可选的.我们可以在不设计模式的情况下存储数据(值存储为$ 01,$ 02等.) | SQL中必须使用模式. |
Apache Pig中的数据模型是嵌套关系. | SQL 中使用的数据模型是平关系. |
Apache Pig为查询优化提供了有限的机会. | 在SQL中有更多机会进行查询优化. |
除了差异,Apache Pig拉丁 :
允许在管道中拆分.
允许开发人员将数据存储在管道中的任何位置.
声明执行计划.
提供运算符来执行ETL(提取,转换和加载)功能./li>
Apache Pig和Hive都用于创建MapReduce作业.在某些情况下,Hive以与Apache Pig类似的方式在HDFS上运行.在下表中,我们列出了一些重要的点,它们将Apache Pig与Hive区分开来.
Apache Pig | Hive |
---|---|
Apache Pig使用一种名为 Pig Latin 的语言.它最初是在 Yahoo 创建的. | Hive使用一种名为 HiveQL 的语言.它最初是在 Facebook 创建的. |
Pig Latin是一种数据流语言. | HiveQL是一种查询处理语言. |
Pig Latin是一种过程语言,它适合管道范例. | HiveQL是一种声明性语言. |
Apache Pig可以处理结构化,非结构化和半结构化数据. | Hive主要用于结构化数据. |
Apache Pig通常被数据科学家用于执行涉及临时处理和快速原型设计的任务. Apache Pig使用 :
处理大量数据源,例如网络日志.
为搜索平台执行数据处理.
处理时间敏感数据加载.
在 2006 中,Apache Pig是作为雅虎的研究项目开发的,特别是在每个数据集上创建和执行MapReduce作业.在 2007 中,Apache Pig是通过Apache孵化器开源的.在 2008 中,Apache Pig的第一个版本问世了.在 2010 中,Apache Pig毕业于Apache顶级项目.