Apache Pig - 概述

什么是Apache Pig?

Apache Pig是MapReduce的抽象.它是一个工具/平台,用于分析表示数据流的较大数据集.猪通常与 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脚本.

  • 优化机会&minus ; Apache Pig中的任务会自动优化它们的执行,因此程序员只需要关注语言的语义.

  • 可扩展性&minus ;使用现有的运算符,用户可以开发自己的函数来读取,处理和写入数据.

  • UDF的 :  Pig提供了用其他编程语言(如Java)创建用户定义函数的工具,并调用或嵌入Pig Scripts中.

  • 处理各种数据 :  Apache Pig分析各种数据,包括结构化数据和非结构化数据.它将结果存储在HDFS中.

Apache Pig与MapReduce

下面列出了主要内容Apache Pig和MapReduce之间的差异.

Apache PigMapReduce
Apache Pig是一种数据流语言.MapReduce是一种数据处理范例.
这是一种高级语言.MapReduce是低水平且严格的.
在Apache Pig中执行连接操作非常简单.MapReduce在数据集之间执行连接操作非常困难.
任何具有SQL基础知识的新手程序员都可以方便地使用Apache Pig.必须使用Java的曝光MapReduce.
Apache Pig使用多曲ery方法,从而在很大程度上减少了代码的长度.MapReduce将需要几乎20倍的行数来执行相同的任务.
无需编译.执行时,每个Apache Pig操作符都在内部转换为MapReduce作业.MapReduce作业的编译过程很长.

Apache Pig Vs SQL

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

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

除了差异,Apache Pig拉丁 :

  • 允许在管道中拆分.

  • 允许开发人员将数据存储在管道中的任何位置.

  • 声明执行计划.

  • 提供运算符来执行ETL(提取,转换和加载)功能./li>

Apache Pig Vs Hive

Apache Pig和Hive都用于创建MapReduce作业.在某些情况下,Hive以与Apache Pig类似的方式在HDFS上运行.在下表中,我们列出了一些重要的点,它们将Apache Pig与Hive区分开来.

Apache PigHive
Apache Pig使用一种名为 Pig Latin 的语言.它最初是在 Yahoo 创建的.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顶级项目.