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个LoC来轻松完成。Apache Pig最终将开发时间缩短了近16倍。

  • Pig Latin是 SQL类语言 ,当熟悉SQL时很容易学习Apache Pig。

  • Apache Pig提供了许多内置运算符来支持数据操作,如连接,过滤器,排序等。此外,它还提供嵌套数据类型,如元组,地图和MapReduce中缺失的映射。

pig的特点

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是一种数据流语言。 MapReduce是一种数据处理范例。
这是一种高级语言。 MapReduce是低层次和僵化的。
在Apache Pig中执行联接操作非常简单。 MapReduce在数据集之间执行Join操作相当困难。
任何具有SQL基础知识的新手程序员都可以方便地使用Apache Pig。 暴露于Java必须与MapReduce协同工作。
Apache Pig使用多查询方法,从而在很大程度上减少了代码的长度。 MapReduce将需要近20倍的行数来执行相同的任务。
不需要编译。执行时,每个Apache Pig操作符都在内部转换为MapReduce作业。 MapReduce作业有一个很长的编译过程。

Apache Pig与SQL相关

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

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

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

  • 允许在管道中分割。
  • 允许开发人员在管道中的任何地方存储数据。
  • 声明执行计划。
  • 提供操作员执行ETL(提取,转换和加载)功能。

Apache Pig与Hive

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

Apache Pig Hive
Apache Pig使用一种称为 **Pig Latin** 的语言。它最初是在 **雅虎** 创建的。 Hive使用名为 **HiveQL** 的语言。它最初是在 **Facebook上** 创建的。
Pig Latin是一种数据流语言。 HiveQL是一种查询处理语言。
pig拉丁语是一种程序语言,它适合于流水线范式。 HiveQL是一种声明性语言。
Apache Pig可以处理结构化,非结构化和半结构化的数据。 Hive主要用于结构化数据。

Apache Pig的应用程序

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

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

Apachepig - 历史

2006年 ,Apache的pig是发展成为雅虎的一个研究项目,特别是建立和每个数据集执行MapReduce作业。在 2007年 ,Apache的pig是通过开放Apache孵化器采购。在 2008年 ,Apache的pig的第一个版本出来。在 2010 ,Apache的pig毕业作为Apache顶级项目。