📜  Apache Pig 简介

📅  最后修改于: 2021-10-27 06:31:40             🧑  作者: Mango

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 可以处理结构化和非结构化数据的分析。
Pig 和 MapReduce 的区别
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 :它是一组键/值对。