Pig系统分析(1) 概述

本系列文章分析Pig运行主线流程,目的是借鉴Pig Latin on Hadoop,探索(类)Pig Latin on Spark的可能性。

Pig概述

Apache Pig是Yahoo!为了让研究人员和工程师能够更简单处理、分析和挖掘大数据而发明的。从数据访问的角度来看,可以把YARN当成大数据的操作系统,那么Pig是各种不同类型的数据应用中不可或缺的一员。

尽管Pig的学习成本比Hive要高一些,但是Pig的优点是表达能力和灵活性更胜一筹。如果说用户使用声明式的Hive Hql表达的只是想要什么数据,那么用户使用过程式的Pig Lation,通过一连串的语句组合,能够充分控制数据分析的整个流程。

Pig整体流程

名词解释

名词 解释 备注
Pig Latin Pig的数据流处理语言  
Loader/Store Pig用于加载和存储数据  
Schema 加载数据时指定的数据格式 Pig的数据类型分为标量和复杂类型,标量基本和Java基本数据类型一致,复杂类型包括Tuple(元组)、Map和Bag(元组的无序集合)
Relation Pig操作的数据集合 即元组的集合,或者说就是一个Bag(更精确来说外部Bag,因为存在嵌套的内部Bag)
Logical plan 逻辑执行计划  
Physical plan 物理执行计划  
Optimizer 优化器 基于规则的逻辑优化器
DAG Directed Acyclic Graph有向无环图  

查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/database/storage/

时间: 2024-12-23 21:43:06

Pig系统分析(1) 概述的相关文章

Pig系统分析(8) Pig可扩展性

本文是Pig系统分析系列中的最后一篇了,主要讨论如何扩展Pig功能,不仅介绍Pig本身提供的UDFs扩展机制,还从架构上探讨Pig扩展可能性. 补充说明:前些天同事发现twitter推动的Pig On Spark项目:Spork,准备研究下. UDFs 通过UDFs(用户自定义函数),可以自定义数据处理方法,扩展Pig功能.实际上,UDFS除了使用之前需要register/define外,和内置函数没什么不同. 基本的EvalFunc 以内置的ABS函数为例: public class ABS

Pig系统分析(5) 从Logical Plan到Physical Plan

Physical Plan生成过程 优化后的逻辑执行计划被LogToPhyTranslationVisitor处理,生成物理执行计划. 这是一个经典的Vistor设计模式应用场景. 其中,LogToPhyTranslationVisitor的visit()为入口方法,通过DependencyOrderWalker遍历处理逻辑执行计划中的每一个LogicalRelationalOperator.DependencyOrderWalker按照依赖顺序遍历DAG中节点,保证当且仅当节点的所有前驱都被访

pig—WordCount analysis概述

grunt> cat /opt/dataset/input.txt keyword1 keyword2 keyword2 keyword4 keyword3 keyword1 keyword4 keyword4 A = LOAD '/opt/dataset/input.txt' using PigStorage('\n') as (line:chararray); B = foreach A generate TOKENIZE((chararray)$0); C = foreach B gene

Pig系统分析(7) Pig实用工具类

Explain Explain是Pig提供的调试工具,使用explain可以输出Pig Lation的执行计划.值得一提的是,explain支持-dot选项,将执行计划以DOT格式输出, (DOT是一种图形描述语言,请参考http://zh.wikipedia.org/zh/DOT%E8%AF%AD%E8%A8%80) 代码实现详见org.apache.pig.impl.plan.DotPlanDumper,这部分实现为我们设计执行计划可视化提供了参考. 下图部分截取了使用Graphviz打开物

Pig系统分析(6) 从Physical Plan到MR Plan再到Hadoop Job

从Physical Plan到Map-Reduce Plan 注:因为我们重点关注的是Pig On Spark针对RDD的执行计划,所以Pig物理执行计划之后的后端参考意义不大,这些部分主要分析流程,忽略实现细节. 入口类MRCompiler,MRCompilier按照拓扑顺序遍历物理执行计划中的节点,将其转换为MROperator,每个MROperator都代表一个map-reduce job,整个完整的计划存储在MROperPlan类中.其中针对Load和Store操作会做以下特殊处理: S

Pig系统分析(4) Logical Plan Optimizer

优化过程 Pig哲学之二--Pigs Are Domestic Animals.用户拥有足够的控制权.具体到逻辑执行计划的优化上,用户可以根据自己情况选择适合的优化规则(也可以理解为优化这块还大有潜力可挖). 逻辑执行计划在编译成物理执行计划之前,会被LogicalPlanOptimizer处理,和一系列优化规则进行匹配,匹配上的优化规则会对原有执行计划进行变换,最终产生优化后的新执行计划.整个过程如图所示: Pig的逻辑优化器通过简化.合并.插入和调整逻辑执行计划中LogicalRelatio

Pig系统分析(3) 从Pig Latin到Logical plan

Pig基于Antlr进行语法解析,生成逻辑执行计划.逻辑执行计划基本上与Pig Latin中的操作步骤一一对应,以DAG形式排列. 以下面代码(参考Pig Latin paper at SIGMOD 2008)为例进行分析,包含了load.filter.join.group.foreach.count函数和stroe等常用操作. PigServer pigServer = new PigServer(ExecType.LOCAL); pigServer.registerQuery("A = lo

Pig系统分析(2) Loader/Store/Schema

Pig哲学之一--Pigs Eat Anything.Pig能够从不同数据源加载数据,能够处理不同格式的数据.Pig使用Loader/Store进行数据加载和存储,可选地使用Schema指定数据列名称和类型.如果加载数据时不指定Schema,数据列未命名,类型默认是字节数组(bytearray),在后续操作中,Pig可以通过位置参数引用数据列,会根据在数据列上进行的操作进行自动类型转化.从性能和可读性考虑,最好在加载数据时指定Schema. Loader体系 Loader的基类是org.apac

《Power Designer系统分析与建模实战》——第1章 软件建模和 Power Designer 概述

第1章 软件建模和Power Designer概述 软件建模体现了软件设计的思想,在系统需求和系统实现之间架起了一座桥梁.软件工程师按照设计人员建立的模型,开发出符合设计目标的软件系统,软件的维护和改进也基于软件模型.Power Designer是Sybase的企业建模和设计解决方案,它是一款收费软件,采用模型驱动方法,将业务与IT结合起来,可帮助部署有效的企业体系架构,并为研发生命周期管理提供强大的分析与设计技术. 本章首先简单介绍软件建模概念和分类,接着介绍常用的建模工具Power Desi