大象教程
首页
Spark
Hadoop
HDFS
MapReduce
Hive
Pig 教程
Pig 教程
Pig 体系结构
Pig 安装
Pig 执行
Pig Grunt Shell
Pig Latin 基础
Pig 读取数据
Pig 存储数据
Pig Dump 运算符
Pig Describe 运算符
Pig Explain 运算符
Pig illustrate 运算符
Pig GROUP 运算符
Pig Cogroup 运算符
Pig JOIN 运算符
Pig Cross 运算符
Pig Union 运算符
Pig SPLIT 运算符
Pig FILTER 运算符
Pig DISTINCT 运算符
Pig FOREACH 运算符
Pig ORDER BY 运算符
Pig LIMIT 运算符
Pig eval(求值) 函数
Pig Load & Store 函数
Pig Bag & Tuple 函数
Pig 字符串(String) 函数
Pig 日期时间函数
Pig 数学函数
#Pig Latin 基础 Pig Latin是使用Apache Pig在Hadoop中分析数据的语言。在本章中,我们将讨论Pig Latin的基础知识,例如Pig Latin语句,数据类型,通用和关系运算符以及Pig Latin UDF。 ##Pig Latin 数据模型 如前几章所述,Pig的数据模型是完全嵌套的。一个关系是隐语数据模型的最外层结构。这是一个bag: - bag是元组的集合。 - 元组是一组有序的字段。 - 字段是一条数据。 ##Pig Latin 语句块 使用Pig Latin处理数据时,语句是基本构造。 - 这些陈述与 relations 有关。它们包括表达式和模式。 - 每个语句以分号(;)结尾。 - 通过声明,我们将使用Pig Latin提供的运算符执行各种操作。 - 除LOAD和STORE外,在执行所有其他操作时,Pig Latin语句将一个 relations 作为输入,并产生另一个关系作为输出。 - 在Grunt shell中输入Load语句后,将立即执行其语义检查。要查看模式的内容,您需要使用Dump运算符。仅在执行转储操作之后,才会执行将数据加载到文件系统中的MapReduce作业。 下面给出的是Pig Latin语句,该语句将数据加载到Apache Pig。 ```bash grunt> Student_data = LOAD 'student_data.txt' USING PigStorage(',')as ( id:int, firstname:chararray, lastname:chararray, phone:chararray, city:chararray ); ``` ##Pig Latin 数据类型 下表给出了Pig Pig的数据类型。 ###基本数据类型 |数据类型|描述与例子| |---|---| |int|表示一个有符号的32位整数。Example : 8| |long|表示一个有符号的64位整数。 Example : 5L| |float|表示一个有符号的32位浮点。 Example : 5.5F| |double|表示64位浮点。 Example : 10.5| |chararray|表示Unicode UTF-8格式的字符数组(字符串)。 Example : 'tutorials point'| |Bytearray|表示一个字节数组(blob)。| |Boolean|表示一个布尔值。 Example : true/ false.| |Datetime|代表日期时间。 Example : 1970-01-01T00:00:00.000+00:0 | |Biginteger|表示一个Java BigInteger。 Example : 60708090709| |Bigdecimal|代表Java BigDecimal Example : 185.98376256272893883| ###复合数据类型 |数据类型|描述与例子| |---|----| |Tuple|元组是一组有序的字段。 Example : (raja, 30)| |Bag|包是元组的集合。Example : {(raju,30),(Mohhammad,45)}| |Map|映射是一组键值对。Example : [ 'name'#'Raju', 'age'#30]| ##Null 值 以上所有数据类型的值都可以为NULL。Apache Pig对待空值的方式与SQL相似。空值可以是未知值或不存在的值。它用作可选值的占位符。这些空值可以自然发生,也可以是操作的结果。 ##Pig Latin 算术运算符 下表描述了Pig Latin的算术运算符。假设a = 10并且b = 20。 |操作符|描述|例子 |---|---|---| |+|加法-在运算符的任一侧添加值|a + b 等于 30 |−|减法-从左手操作数中减去右手操作数|a − b 等于 −10| |*|乘法-将运算符两侧的值相乘|a * b 等于 200| |/|除法-将左操作数除以右操作数|b / a 等于 2| |%|模数-将左操作数除以右操作数并返回余数|b % a 等于 0| |?|: Bincond-评估布尔运算符。 它具有三个操作数,如下所示。 `variable x = (expression) ? value1 if true : value2 if false`|b = (a == 1)? 20: 30;if a = 1 the value of b is 20.if a!=1 the value of b is 30.| |CASE WHEN THEN ELSE END|Case − case运算符等效于嵌套bincond运算符。|CASE f2 % 2 WHEN 0 THEN 'even' WHEN 1 THEN 'odd' END| ##Pig Latin–比较运算符 下表描述了Pig Latin的比较运算符。 |操作符|描述|例子 |---|---|--- |== |等于 − 检查两个操作数的值是否相等; 如果是,则条件变为真。 |(a = b) 非 true>| |!= |不等 − 检查两个操作数的值是否相等。 如果值不相等,则条件为真。 |(a != b) is true.| |> |大于 − 检查左操作数的值是否大于右操作数的值。 如果是,则条件变为真。 |(a > b) 非 true.| |< |小于 − 检查左操作数的值是否小于右操作数的值。 如果是,则条件变为真。 |(a < b) is true.| |>= |大于等于 − 检查左操作数的值是否大于或等于右操作数的值。 如果是,则条件变为真。 |(a >= b) 非 true.| |<= |小于等于 − 检查左操作数的值是否小于或等于右操作数的值。 如果是,则条件变为真。 |(a <= b) is true.| |matches |模式匹配 − 检查左侧的字符串是否与右侧的常量匹配。 |f1 matches '.*jc2182.*'| ##Pig Latin–类型构造运算符 下表描述了Pig Latin的Type构造运算符。 |操作符|描述|例子| |---|---|---| |() |元组构造函数运算符 − 该运算符用于构造一个元组。| (Raju, 30)| |{} |bag构造函数运算符 − 该运算符用于构造bag。 |{(Raju, 30), (Mohammad, 45)}| |[] |map构造函数运算符 − 该运算符用于构造一个元组。| [name#Raja, age#30]| ##Pig Latin–关系运算符 下表描述了Pig Latin的关系运算符。 ###加载和存储 操作符|描述 --|--- LOAD|将文件系统(本地/ HDFS)中的数据加载到关系中。 STORE|保存与文件系统(本地/ HDFS)的关系。 ###筛选 操作符|描述 --|--- FILTER|从关系中删除不需要的行。 DISTINCT|从关系中删除重复的行。 FOREACH, GENERATE|基于数据列生成数据转换。 STREAM|使用外部程序转换关系。 ###分组和加入 操作符|描述 --|--- JOIN|加入两个或多个关系。 COGROUP|将数据分为两个或多个关系。 GROUP|将数据分组为单个关系。 CROSS|创建两个或更多关系的叉积。 ###排序 操作符|描述 --|--- ORDER|根据一个或多个字段(升序或降序)以排序顺序排列关系。 LIMIT|从关系中获取有限数量的元组。 ###合并和拆分 操作符|描述 --|--- UNION|将两个或多个关系合并为一个关系。 SPLIT|将单个关系分为两个或多个关系。 ###诊断 操作符|描述 --|--- DUMP|在控制台上打印关系的内容。 DESCRIBE|描述关系的模式。 EXPLAIN|查看逻辑,物理或MapReduce执行计划以计算关系。 ILLUSTRATE|查看一系列语句的分步执行。
加我微信交流吧