Apache Pig:您需要了解的有关Hadoop编程语言的所有信息


Apache Hadoop 框架的 MapReduce 编程模型可以处理大量的大数据数据。然而,数据分析师并不总是理解这种范式。这就是将一个名为 Pig 的抽象添加到 Hadoop 的原因。
 
什么是Apache Pig?
高级 Apache Pig 编程语言对于分析大型数据集非常有用。它最初是由雅虎内部开发的!2006 年,为了在所有数据集上创建和运行 MapReduce 作业。
选择“pig猪”这个名字是因为这种编程语言旨在处理任何类型的数据,就像猪一样吞噬一切。
2007 年,Pig 通过 Apache 孵化器开源。2008 年,Apache Pig 的第一个版本发布。大获成功,Pig 在 2010 年成为 Apache 的顶级项目。
通过使用 Apache Pig,数据分析师可以减少编写 MapReduce 程序的时间。因此,他们可以继续专注于分析数据集。
因此,Apache Pig 是 MapReduce 的抽象。该工具用于通过将大型数据集表示为数据流来分析大型数据集。Hadoop 上的所有数据操作操作都可以使用 Apache Pig 执行。
 
Apache Pig 架构
Apache Pig架构基于两个主要组件:Pig Latin 语言和允许执行 PigLatin 程序的运行时环境。
Pig Latin 语言用于编写数据分析程序。它提供了各种运算符,程序员可以使用这些运算符来开发自己的函数来读取、写入或处理数据。
甲猪拉丁程序在一系列变换的由或操作,适用于“输入”数据,以产生一个“输出”。这些操作描述了由 Hadoop Pig 运行时环境转换为可执行表示的数据流。
要使用 Apache Pig 分析数据,程序员必须使用 Pig Latin 语言编写脚本。所有这些脚本都在内部转换为 Map 和 Reduce 任务。Pig Engine 组件负责将脚本转换为 MapReduce 作业。
然而,程序员甚至不知道这些工作。这就是 Pig 允许程序员专注于数据而不是执行的性质的方式。
Pig有两种执行模式。本地模式在单个 JVM 上运行并使用本地文件系统。这种模式适用于分析小数据集。
在 Map Reduce 模式下,用 Pig Latin 编写的请求被转换为 MapReduce 作业 并在 Hadoop 集群上执行。后者可以部分或全部分布。MapReduce 模式与完全分布式集群相结合对于在大型数据集上运行 Pig 非常有用。
 
为什么要使用 Apache Pig?
过去,刚接触 Java 的程序员发现很难使用 Hadoop。他们执行 MapReduce 任务特别困难。
这个问题可以用 Apache Pig 解决。使用 Pig Latin 语言,程序员可以轻松地执行 MapReduce 任务,而无需在 Java 中键入复杂的代码。
此外,Apache Pig 基于“多查询”方法,可以减少代码的长度。在 Java 中需要 200 行代码的操作可以使用 Pig 减少到仅 10 行。平均而言,Apache Pig 将开发时间除以 16。
Pig Latin 语言的一个优点是它相对接近于 SQL 语言。熟悉 SQL 的人很容易掌握 Pig。
最后,本机提供了许多运算符。它们用于支持各种数据操作。该工具还提供了 MapReduce 中缺少的数据类型,如元组、包和地图。
 
Apache Pig 应用程序
通常,数据科学家使用 Apache Pig 来执行涉及 Hadoop 处理和快速原型设计的任务。它特别用于处理大量数据源,例如网络日志。
该工具还支持研究平台的数据处理。最后,它有助于处理对时间敏感的数据加载。
 
Apache Pig的特点和优势
以下是 Apache Pig 的主要特性和功能。Pïg 拉丁语编程语言与 SQL 类似,可以轻松编写 Pig 脚本。
大运营商会实现各种各样的要执行的数据操作。用户可以从这些运算符中开发自己的函数来读取、处理和写入数据。
这是也可以创建的UDF(用户定义的函数)或用户定义的函数在其他的编程语言如Java。然后可以调用它们或将它们集成到 Pig 脚本中。
此外,Apache Pig 作业会自动优化其执行。因此,程序员可以只关注语言的语义。
使用 Apache Pig,可以分析所有类型的结构化或非结构化数据。分析结果存储在 Apache Hadoop 的 HDFS 中。
 
Apache Pig 与 MapReduce
Apache Pig 和 MapReduce 之间有几个主要区别。首先,MapReduce 是一种数据处理范式,而 Pig 是一种数据流语言。
它是一种高级语言,而 MapReduce是一种低级语言。使用 MapReduce 在数据集之间执行 Join 操作很困难,而使用 Pig 则很容易。
任何具有 SQL 基础知识的程序员都可以使用 Apache Pig,而MapReduce 需要精通 Java。
另一个区别涉及代码行的长度。由于其多查询方法,Apache Pig 执行相同任务所需的行数比 MapReduce 少 20 倍。
最后,Mapreduce 任务涉及一个漫长的编译过程。无需使用 Pig 进行编译,因为每个运算符在运行时都会在内部转换为 MapReduce 作业。
 
Apache Pig 与 SQL
Apache Pig 与 SQL 有一些相似之处,但也有一些不同之处。Pig Latin 是一种过程语言,而SQL 是一种声明性语言。
此外,模式在 SQL 中是强制性的,而在 Pig 中是可选的。可以在不设计模式的情况下存储数据。
SQL 有更多的查询优化机会,而 Pig 则更有限。此外,Pig Latin 允许分解管道,将数据存储在管道中的任何位置并执行 ETL 功能(提取、转换、加载)。
 
Apache Pig 与 Hive
Apache Pig 由 Yahoo 创建,Hive 由 Facebook 创建。第一种使用 Pig Latin 语言,第二种语言使用 HiveQL,
而 Pig Latin 是一种数据流语言和一种过程语言。HiveQL 是一种查询处理 语言,也是一种声明性语言。
最后,Hive主要支持结构化数据。另一方面,Pig 可以支持结构化、非结构化和半结构化数据。