开发手册 欢迎您!
软件开发者资料库

猪拉丁语 - 基础知识

Apache Pig Latin Basics - 从概述,体系结构,安装,执行,Grunt Shell,Pig Latin Basics,读取数据,存储数据,诊断运算符,Describe运算符,Explain运算符,Illustrate运算符,Group运算符,Cogroup运算符,Join,学习Apache Pig操作员,跨操作员,联合操作员,拆分操作员,过滤操作员,不同操作员,Foreach操作员,订单依据,限制操作员,评估函数,加载和存储函数,包和元组函数,字符串函数,日期时间函数,数学函数,用户定义的函数,运行脚本。

Pig Latin是用于使用Apache Pig分析Hadoop中的数据的语言.在本章中,我们将讨论Pig Latin的基础知识,例如Pig Latin语句,数据类型,一般和关系运算符以及Pig Latin UDF.

Pig Latin  - 数据模型

正如前面章节中所讨论的,Pig的数据模型是完全嵌套的. 关系是Pig Latin数据模型的最外层结构.它是一个,其中 :

  • 一个包是元组的集合.

  • 元组是一组有序的字段.

  • 字段是一段数据.

Pig Latin  -  Statemets

使用Pig Latin处理数据时,语句是基本结构.

  • 这些语句适用于关系.它们包括表达式架构.

  • 每个语句都以分号(;)结尾.

  • 我们将使用Pig Latin提供的运算符通过语句执行各种操作.

  • 除外LOAD和STORE,在执行所有其他操作时,Pig Latin语句将关系作为输入并产生另一个关系作为输出.

  • 一旦输入在Grunt shell中加载语句,将执行语义检查.要查看架构的内容,您需要使用转储运算符.只有在执行转储操作后,才会执行用于将数据加载到文件系统的MapReduce作业.

示例

以下是Pig Latin语句,它将数据加载到Apache Pig.

grunt> Student_data = LOAD 'student_data.txt' USING PigStorage(',')as    ( id:int, firstname:chararray, lastname:chararray, phone:chararray, city:chararray );

Pig Latin  - 数据类型

下表给出了Pig Latin数据类型.

SN数据类型描述&示例
1int

表示带符号的32位整数.

示例:8

2long

代表签名的64位整数.

示例:5L

3float

表示带符号的32位浮点.

示例:5.5F

4double

表示64位浮点.

示例:10.5

5chararray

表示Unicode UTF-8格式的字符数组(字符串).

示例: '教程点'

6Bytearray

表示字节数组(blob).

7Bo olean

表示布尔值.

示例:true/false.

8日期时间

表示日期时间.

示例:1970-01-01T00:00:00.000 + 00:00

9Biginteger

表示Java BigInteger.

示例:60708090709

10Bigdecimal

表示Java BigDecimal

示例:185.98376256272893883



Complex Types
11元组

元组是一组有序的字段.

示例 :( raja,30)

12Bag

Bag是元组的集合.

示例:{(raju,30),(Mohhammad,45)}

13Map

Map是一组键值对.

示例:['name'#'Raju','age'#30]

空值

以上所有数据的值类型可以为NULL. Apache Pig以与SQL类似的方式处理空值.

null可以是未知值或不存在的值.它用作可选值的占位符.这些空值可以自然发生,也可以是操作的结果.

Pig Latin  - 算术运算符

下表描述了Pig的算术运算符拉丁.假设a = 10且b = 20.

运算符描述示例
+

添加 : 在运算符的任一侧添加值

a+ b将给出30
:

减法 : 从左手操作数中减去右手操作数

a :  b将给予&减去; 10
*

乘法 : 将运算符两侧的值相乘

a * b将给出200
/

分部 : 用左手操作数除左手操作数

b/a将给2

模数 : 用左手操作数除左手操作数并返回余数

b%a将给0
? :

Bincond : 评估布尔运算符.它有三个操作数,如下所示.

变量 x =(表达式)? value1 如果为真: value2 如果为.

b =(a == 1)? 20:30;

如果a = 1,则b的值为20.

如果a!= 1,则b的值为30./p>

CASE

WHEN

THEN

ELSE END


案例 :  case运算符相当于嵌套的bincond运算符.

CASE f2%2

当0那么'甚至'

当1'那么'奇数'

END

猪拉丁语 - 比较运算符

下表描述Pig Latin的比较运算符.

运算符描述示例
==

等于 : 检查两个操作数的值是否相等;如果是,则条件成立.

(a = b)不成立
!=

不等于 : 检查两个操作数的值是否相等.如果值不相等,则条件成立.

(a!= b)为真.
>

大于 : 检查左操作数的值是否大于右操作数的值.如果是,那么条件成立.

(a> b)不成立.
<

小于 : 检查左操作数的值是否小于右操作数的值.如果是,则条件成立.

(a< b)为真.
> =

大于或等于 : 检查左操作数的值是否大于或等于右操作数的值.如果是,则条件成立.

(a> = b)不成立.
< =

小于或等于 &减去;检查左操作数的值是否小于或等于右操作数的值.如果是,则条件成立.

(a< = b)为真.
matches

模式匹配 : 检查左侧的字符串是否与右侧的常量匹配.

f1匹配'.* tutorial.*'

Pig Latin  - 类型构造运算符

下表描述了Pig Latin的Type构造运算符.

运算符描述示例
()

元组构造函数 : 此运算符用于构造元组.

(Raju,30)
{}

行构造函数运算符 : 这个操作符用于构建一个包.

{(Raju,30),(Mohammad,45)}
[]

地图构造函数&minus ;此运算符用于构造元组.

[name#Raja,年龄#30]

Pig Latin  - 关系运算

下表描述了Pig Latin的关系运算符.

运算符描述
加载和存储
LOAD将数据从文件系统(本地/HDFS)加载到关系中.
STORE保存与文件系统的关系(本地/HDFS).
过滤
FILTER从中删除不需要的行一个关系.
DISTINCT从关系中删除重复的行.
FOREACH,GENERATE生成基于数据列的数据转换.
STREAM转换关系使用外部程序.
分组和加入
加入加入两个或更多关系.
COGROUP将数据分组为两个或更多关系.
GROUP以单一关系对数据进行分组.
CROSS创建两个或更多关系的叉积.
排序
ORDER安排关系基于一个或多个字段的排序顺序(升序或降序).
LIMIT从关系中获取有限数量的元组.
合并和拆分
UNION合并两个或更多关系成单一关系.
SPLIT拆分单个关系到两个或多个关系.
诊断操作员
DUMP打印内容控制台上的关系.
DESCRIBE描述架构关系.
EXPLAIN查看逻辑,物理或MapReduce计算关系的执行计划.
ILLUSTRATE查看步骤 - 逐步执行一系列陈述.
BtnPgpT" })