编辑: 鱼饵虫 | 2019-07-15 |
Alan 是Apache Incubator* 项目管理委员会 (PMC)和Apache* Pig* 项目管理委员会的成员,同时还是 Apache HCatalog 项目的顾问,以及 Hortonworks 的联合创始人兼架构师. Apache Pig:面向 Hadoop* 框架的高级语言 Pig 平台为创建 Apache MapReduce 应用程序提供了一款相对简 单的工具.随着活跃的开源社区对项目的不断投入,Pig 迅速 发展壮大,逐渐成为一种能分析大数据的高级数据流编程语言 和执行框架. Pig 平台由 Pig Latin 编程语言和基础设施构成,后者能够支持 在分布式文件系统上运行的应用程序. ? 基础设施层包含一个可用于生成 MapReduce 程序的编译器. ? Pig Latin 是一种高级文本语言,有效简化了编写、理解和维 护程序的工作.从实践应用角度而言,这意味着您可在
15 分钟内编写一个 Pig 脚本,而如果您采用 Java* 语言编写它, 则可能需要花上数个小时.Pig 平台还优化了任务自动执行 功能,并支持使用自定义功能进行扩展. Pig 系统位于 Apache Hadoop* 分布式文件系统(简称 Apache HDFS*)之上.它能够读取来自 HDFS 以及其他位置的数据,并 向其写入数据,同时还可运行 MapReduce 作业.从本质上来 说,Pig 平台提供了一种与 Hadoop 框架轻松进行交互的方式. Pig Latin:为什么选择另一种编程语言? Pig Latin 是一种非传统的编程语言,专注于数据流而非 Java 或Python 等语言所使用的传统编程操作.作为一名 Pig Latin 用户, 您可通过指定一个或多个输入数据集,然后识别出其需要应用 的操作来构建脚本.这些操作可能包括筛选不需要的纪录、合 并两个数据集以及基于特定标准拆分数据集等.您可在
图表中 连接特定的操作,以自动找到最佳数据流.然后,您可以定义 如何将数据写出到一个或多个输出源.这对于程序而言是一种 截然不同的方式. Pig 可使用 Hadoop 框架为您管理所有转换和协调工作.首先, 它将在 Pig Latin 脚本上自动执行优化,然后将要求的操作转换 成一个或多个(通常为
10 个、20 个甚至是
50 个)MapReduce 作业.Pig 在Hadoop 集群中运行这些作业,并同时提供进度反 馈和错误信息提示等. "Pig Latin 为不希望使用复杂的 Java* 代码来创建 MapReduce 应用程序的用户提供了一个理想之选. " ― Alan Gates 用户通常将 Pig 平台和 Apache Hive* 数据仓库基础设施视为能够 实现相同目标的不同工具.然而事实上,Pig 和Hive 能够提供 不同的分析功能.Hive 在MapReduce 之上呈现了一个结构化查 询语言(SQL)层,适用于解决来自结构化关系型数据的问题. Pig 语言用于在 Hadoop 环境中运行,其面对的数据可能为结构 化或非结构化,也可能采用已知或未知模式. Pig 平台用于提供一系列的操作.它常用于执行提取、转换、加载(ETL)操作,通过从各种来源中请求数据,然后在 Hadoop 框架中根据用户脚本的命令进行转换.例如,使用 SQL 或Hive 时您可能会问到: "有多少用户在昨天访问过我的网站后,今 天再次访问?"在Pig 中,您可使用一个单一的脚本来定义更 长的操作集,例如,"查找昨天和今天访问过我的网站的所有 用户,分析他们购买了什么,并找出他们所属的群体和所处的 地理区域." Pig 与Apache Hive 之比较 Pig 平台如何处理关系型系统数据? Apache* Pig* 能够用以下两种方式处理关系型数据集: ? 您可将关系型数据直接加载至 Pig 能够访问的 Apache Hadoop* 框架. ? 借助数据库连接器,Pig 能够从关系型数据库系统直接加 载数据,并进行访问. 针对 Pig 平台的缺省操作是首先在 Apache Hadoop* 分布式 文件系统(HDFS*)中读取和写入数据,但由于它还可从 Apache HBase*