Apache pig概述
pig是MapReduce的一个抽象。它是一个工具,用于分析较大的数据集,并将其表示为数据流。常与Hadoop一起使用,可以使用pig在Hadoop中执行所有的数据处理操作。
pig提供了一种名为pig Latin的高级语言。使用pig分析数据,需要编写pig Latin脚本,这些脚本在内部都转化为MapReduce任务。
pig与MapReduce的区别:
![4ecc6a0bce798bca765202e33d18f335.png](https://i-blog.csdnimg.cn/blog_migrate/18bc8305d974d46a956118d85be2a8c3.jpeg)
pig与hive的区别
![57eaa5876ec788a9a5cea96aec234ee6.png](https://i-blog.csdnimg.cn/blog_migrate/e6ea5251e276890008a544afac068d46.jpeg)
pig Latin 一种并行的数据流语言
用户从一个或多个数据源并行读取数据,然后并行的处理,最后将结果并行的输出到一个或者多个结果集中。pig描述的是一个有向无环图。
pig Latin数据模型
Pig Latin的数据模型是完全嵌套的,它允许复杂的非原子数据类型。
![eeb6f3d48e4485815a2205e18c0286e8.png](https://i-blog.csdnimg.cn/blog_migrate/0ab592a0e619e034514b4530f7904aca.png)
原子(atom):任何单个值,无论其数据类型都是atom。它存储为字符串,可以用作字符串和数字。例:“raja“或“30"
元组(tuple):由有序字段集合形成的记录称为元组,字段可以是任何类型。例:(Raja,30)。tuple的映射操作是用 .(点操作符)。可以通过字段名引用,也可以通过位置引用。t.x,t.$1。
包(bag):一个包是一组无序的元组。换句话说,元组(非唯一)的集合被称为包。每个元组可以有任意数量的字段(灵活模式)。包由“{}"表示。例:{(Raja,30),(Mohammad,45)}。用户需要映射bag字段的时候,可以通过创建一个包含用户需要字段的bag。
映射(map):k-v对。k是chararray类型,v可以是任何类型,由[]表示。例:[name#Raja,age#30]
关系(relation):一个关系是一个元组的包,pig Latin中的关系是无需的。
模式:为数据定义的模式
将用户的数据模式传达给pig最简单的方式就是在加载数据时告诉pig用户加载的数据是什么样子的。当用户生命一个数据模式时,也不一定要声明其中的复杂数据类型,比如声明了一个tuple,但是也可以不申明其中包含了哪些字段。
pig Latin基础
1、 数据模型:关系是pig数据模型最外层的结构。它是一个包,其中:
- 元组的集合
- 元组是有序的字段集合
- 字段是一段数据
2、 语句:语句是基本结构
- 语句使用关系,包括 表达式 和 模式。
- 语句用 ; 结尾。