Pig 教程



  • Pig 教程

    Apache PigMapReduce的抽象。它是一种工具/平台,用于分析将较大的数据集表示为数据流的数据。Pig通常与Hadoop一起使用;我们可以使用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使用多查询方法,从而减少了代码长度。例如,只需在Apache Pig中键入少于10个LoC即可轻松完成需要在Java中键入200行代码(LoC)的操作。最终,Apache Pig将开发时间减少了近16倍。
    Pig Latin是一种类似SQL的语言,当您熟悉SQL时很容易学习Apache Pig。
    Apache Pig提供了许多内置的运算符来支持数据操作,例如联接,过滤器,排序等。此外,它还提供了MapReduce中缺少的嵌套数据类型,例如元组,包和映射(maps)。
  • Pig 的功能

    Apache Pig具有以下功能-
    • 丰富的运算符集 - 它提供许多运算符来执行诸如 join, sort, filer等操作。
    • 易于编程 - Pig Latin与SQL相似,如果您擅长SQL,则很容易编写Pig脚本。
    • 自动优化 - Apache Pig中的任务会自动优化其执行,因此程序员只需要专注于语言的语义。
    • 可扩展性 – 使用现有的运算符,用户可以开发自己的函数来读取,处理和写入数据。
    • UDF的 – Pig提供了使用其他编程语言(例如Java)创建用户定义函数并将其调用或嵌入Pig脚本的功能。
    • 处理各种数据 - Apache Pig分析所有结构化和非结构化数据。它将结果存储在HDFS中。
  • Apache Pig 与 MapReduce

    下面列出的是Apache Pig和MapReduce之间的主要区别。
    Pig MapReduce
    Apache Pig是一种数据流语言。 MapReduce是一种数据处理范例。
    这是一种高级语言。 MapReduce是低级且严格的。
    在Apache Pig中执行Join操作非常简单。 在MapReduce中,很难在数据集之间执行Join操作。
    任何具有SQL基本知识的新手程序员都可以轻松地与Apache Pig一起工作。 使用MapReduce必须与Java接触。
    Apache Pig使用多查询方法,从而在很大程度上减少了代码长度。 MapReduce将需要多近20倍的行数来执行同一任务。
    无需编译。在执行时,每个Apache Pig运算符都会在内部转换为MapReduce作业。 MapReduce作业的编译过程很长。
  • Apache Pig 与 SQL

    下面列出的是Apache Pig和SQL之间的主要区别。
    Pig SQL
    Pig Latin是一种程序语言。 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脱颖而出的重要方面。
    Pig Hive
    Apache Pig使用一种称为Pig Latin的语言。它最初是由Yahoo创建的。 Hive使用一种称为HiveQL的语言。它最初是在Facebook上创建的。
    Pig Latin是一种数据流语言。 HiveQL是查询处理语言。
    Pig Latin是一种过程语言,适合流水线范例。 HiveQL是一种声明性语言。
    Apache Pig可以处理结构化,非结构化和半结构化数据。 Hive主要用于结构化数据。
  • Apache Pig的应用

    数据科学家通常使用Apache Pig来执行涉及即时处理和快速原型制作的任务。使用Apache Pig-
    • 处理大量数据源,例如Web日志。
    • 对搜索平台执行数据处理。
    • 处理时间敏感的数据加载。
  • Apache Pig–历史

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

    本教程适用于所有希望在不使用Java键入复杂代码的情况下执行MapReduce操作的Hadoop专业人员。
    要充分利用本教程,您应该对Hadoop和HDFS命令的基础知识有很好的了解。如果您擅长SQL,那么肯定会有所帮助。