Pig 是用于处理大型数据集的高级平台或工具。它为 MapReduce 上的处理提供了高级抽象。它提供了一种高级脚本语言,称为Pig Latin ,用于开发数据分析代码。首先,为了处理存储在 HDFS 中的数据,程序员将使用 Pig Latin 语言编写脚本。 Pig Engine (Apache Pig 的一个组件)在内部将所有这些脚本转换为特定的 map 和 reduce 任务。但是这些对于程序员来说是不可见的,以便提供高级别的抽象。 Pig Latin 和 Pig Engine 是 Apache Pig 工具的两个主要组件。 Pig 的结果始终存储在 HDFS 中。
注: Pig Engine 有两种类型的执行环境,即单个 JVM 中的本地执行环境(当数据集较小时使用)和 Hadoop 集群中的分布式执行环境。
猪的需求: MapReduce 的一个限制是开发周期很长。编写reducer 和mapper、编译打包代码、提交作业和检索输出是一项耗时的任务。 Apache Pig 使用多查询方法减少了开发时间。此外,Pig 对非Java背景的程序员有益。 200 行Java代码可以用 Pig Latin 语言写成 10 行。拥有 SQL 知识的程序员学习 Pig Latin 所需的努力更少。
Pig 的演变:早在 2006 年,雅虎的研究人员就开发了 Apache Pig。当时,开发 Pig 的主要思想是在超大数据集上执行 MapReduce 作业。 2007 年,它转移到 Apache 软件基金会 (ASF),这使其成为一个开源项目。 Pig 的第一个版本( 0.1 )是在 2008 年发布的。Apache Pig 的最新版本是0.18 ,它是在 2017 年发布的。
阿帕奇猪的特点:
- 为了执行多个操作,Apache Pig 提供了丰富的运算符集,例如过滤器、连接、排序等。
- 易于学习、阅读和写作。特别是对于 SQL 程序员,Apache Pig 是一个福音。
- Apache Pig 是可扩展的,因此您可以创建自己的用户定义函数和流程。
- 在 Apache Pig 中加入操作很容易。
- 更少的代码行。
- Apache Pig 允许在管道中进行拆分。
- 数据结构是多值的、嵌套的、更丰富的。
- Pig 可以处理结构化和非结构化数据的分析。
Apache Pig | MapReduce |
---|---|
It is a scripting language. | It is a compiled programming language. |
Abstraction is at higher level. | Abstraction is at lower level. |
It have less line of code as compared to MapReduce. | Lines of code is more. |
Less effort is needed for Apache Pig. | More development efforts are required for MapReduce. |
Code efficiency is less as compared to MapReduce. | As compared to Pig efficiency of code is higher. |
Apache Pig 的应用:
- 为了探索大型数据集,使用 Pig Scripting。
- 为 Ad-hoc 查询提供跨大型数据集的支持。
- 在大型数据集处理算法的原型设计中。
- 需要处理时间敏感的数据加载。
- 用于以搜索日志和网络爬虫的形式收集大量数据集。
- 在使用采样需要分析见解的地方使用。
Apache Pig中的数据模型类型:它由4种数据模型组成,如下所示:
- Atom :它是一个原子数据值,用于存储为字符串。这个模型的主要用途是它可以用作数字和字符串。
- 元组:它是一组有序的字段。
- Bag :它是元组的集合。
- Map :它是一组键/值对。