Pig latin基础
pig的两种运行模式,local模式,mapreduce模式
local模式下,pig只能访问本地一台;在mapreduce模式下,pig可以访问一个hadoop集群和hdfs的安装位置。这时,pig将自动对这个集群进行分配和回收。因为pig系统可以自动对mapreduce程序进行优化,所以当用户使用pig latin编程时,不必关系程序的运行效率,pig系统会自动对程序进行优化。
pig的local模式以及mapreduce模式都是有三种运行模式:Grunt shell方式,脚本文件方式,嵌入式程序方式
mapreduce模式下:
1 .grunt shell 方式
[root@host pig-0.17.0]# pig -x mapreduce
18/06/15 09:40:34 INFO pig.ExecTypeProvider: Trying ExecType : LOCAL
18/06/15 09:40:34 INFO pig.ExecTypeProvider: Trying ExecType : MAPREDUCE
18/06/15 09:40:34 INFO pig.ExecTypeProvider: Picked MAPREDUCE as the ExecType
2018-06-15 09:40:34,951 [main] INFO org.apache.pig.Main - Apache Pig version 0.17.0 (r1797386) compiled Jun 02 2017, 15:41:58
2018-06-15 09:40:34,951 [main] INFO org.apache.pig.Main - Logging error messages to: /root/pig/pig-0.17.0/pig_1529026834950.log
2018-06-15 09:40:34,971 [main] INFO org.apache.pig.impl.util.Utils - Default bootup file /root/.pigbootup not found
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/root/hadoop/hadoop-2.7.4/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/root/hbase-1.4.4/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/root/hive/apache-hive-2.1.1/lib/log4j-slf4j-impl-2.4.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
2018-06-15 09:40:35,586 [main] INFO org.apache.hadoop.conf.Configuration.deprecation - mapred.job.tracker is deprecated. Instead, use mapreduce.jobtracker.address
2018-06-15 09:40:35,586 [main] INFO org.apache.pig.backend.hadoop.executionengine.HExecutionEngine - Connecting to hadoop file system at: hdfs://localhost:9000
2018-06-15 09:40:36,347 [main] INFO org.apache.pig.PigServer - Pig Script ID for the session: PIG-default-cb6cead5-f22f-4960-bce7-5f44cdb722ec
2018-06-15 09:40:36,347 [main] WARN org.apache.pig.PigServer - ATS is disabled since yarn.timeline-service.enabled set to false
grunt>
2 .脚本文件方式
pig -x mapreduce script.pig
3.spark模式
pig -x spark id.pig
pig latin语言
与数据库操作语言类似,但更侧重于对数据的分析查询,而不是对数据进行修改删除等操作,运行在hadoop分布式平台上,能够在短时间内处理海量数据,如处理日志文件,处理大型数据库文件, 处理WEB数据等。
pigLatin的操作:通过对关系进行处理产生另外一组关系(适用于除load ,store以外的所有操作,load和store分别执行从文件系统的读取和写入操作)。
pig latin语句一条语句可以跨越多行,但是必须以半角的分号结束。
通常按照下面的流程编写语句:
1.通过load语句从文件系统读取数据
2.通过一系列的转换语句对数据进行处理
3通过store语句把处理结果输出到文件系统,或者使用一条dump语句把处理结果输出到屏幕上。
Pig Latin - 数据模型
Pig的数据模型是完全嵌套的。Relation是Pig Latin数据模型的最外层结构。它是一个包
- 包是元组的集合。
- 元组是有序的field(字段)集。
- field(字段)是一段数据。
Pig Latin - 语句
在使用Pig Latin处理数据时,语句是基本结构。
这些语句使用关系(relation),它们包括表达式(expression)和模式(schema)。
每个语句以分号(;)结尾。
我们将使用Pig Latin提供的运算符通过语句执行各种操作。
除了LOAD和STORE,在执行所有其他操作时,Pig Latin语句采用关系作为输入,并产生另一个关系作为输出。
只要在Grunt shell中输入 Load 语句,就会执行语义检查。要查看模式的内容,需要使用 Dump 运算符。只有在执行 dump 操作后,才会执行将数据加载到文件系统的MapReduce作业。
Pig Latin - 数据类型
序号 | 数据类型 | 说明&示例 |
---|---|---|
1 | int |
表示有符号的32位整数。 示例:8 |
2 | long |
表示有符号的64位整数。 示例:5L |
3 | float |
表示有符号的32位浮点。 示例:5.5F |
4 | double |
表示64位浮点。 示例:10.5 |
5 | chararray |
表示Unicode UTF-8格式的字符数组(字符串)。 示例:‘w3cschool’ |
6 | Bytearray |
表示字节数组(blob)。 |
7 | Boolean |
表示布尔值。 示例:true / false。 |
8 | Datetime |
表示日期时间。 示例:1970-01-01T00:00:00.000 + 00:00 |
9 | Biginteger |
表示Java BigInteger。 示例:60708090709 |
10 | Bigdecimal |
表示Java BigDecimal 示例:185.98376256272893883 |
复杂类型 | ||
11 | Tuple |
元组是有序的字段集。 示例:(raja,30) |
12 | Bag |
包是元组的集合。 示例:{(raju,30),(Mohhammad,45)} |
13 | Map |
map是一组键值对。 示例:['name'#'Raju','age'#30] |
Pig Latin - 算术运算符
运算符 | 描述 | 示例 |
---|---|---|
+ |
加 - 运算符的两侧的值相加 |
a+b将得出30 |
− |
减 - 从运算符左边的数中减去右边的数 |
a-b将得出-10 |
* |
乘 - 运算符两侧的值相乘 |
a*b将得出200 |
/ |
除 - 用运算符左边的数除右边的数 |
b / a将得出2 |
% |
余数 - 用运算符右边的数除左边的数并返回余数 |
b%a将得出0 |
? : |
Bincond - 评估布尔运算符。它有三个操作数,如下所示。 变量 x =(expression)?value1 (如果为true):value2(如果为false)。 |
b =(a == 1)? 20:30; 如果a = 1,则b的值为20。 如果a!= 1,则b的值为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的比较运算符。
运算符 | 描述 | 示例 |
---|---|---|
== |
等于 - 检查两个数的值是否相等;如果是,则条件变为true。 |
(a = b)不为true。 |
!= |
不等于 - 检查两个数的值是否相等。如果值不相等,则条件为true。 |
(a!= b)为true。 |
> |
大于 - 检查左边数的值是否大于右边数的值。 如果是,则条件变为true。 |
(a> b)不为true。 |
< |
小于 - 检查左边数的值是否小于右边数的值。 如果是,则条件变为true。 |
(a<b)为true。 |
>= |
大于或等于 - 检查左边数的值是否大于或等于右边数的值。如果是,则条件变为true。 |
(a>=b)不为true。 |
<= |
小于或等于 - 检查左边数的值是否小于或等于右边数的值。如果是,则条件变为true。 |
(a<=b)为true。 |
matches |
模式匹配 - 检查左侧的字符串是否与右侧的常量匹配。 |
f1 matches '.* tutorial.*' |
Pig Latin - 类型结构运算符
下表描述了Pig Latin的类型结构运算符。
运算符 | 描述 | 示例 |
---|---|---|
() |
元组构造函数运算符 - 此运算符用于构建元组。 |
(Raju,30) |
{} |
包构造函数运算符 - 此运算符用于构造包。 |
{(Raju,30),(Mohammad,45)} |
[] |
映射构造函数运算符 - 此运算符用于构造一个映射。 |
[name#Raja,age#30] |
Pig Latin - 关系运算符
下表描述了Pig Latin的关系运算符。
运算符 | 描述 |
---|---|
加载和存储 | |
LOAD | 将数据从文件系统(local/ HDFS)加载到关系中。 |
STORE | 将数据从文件系统(local/ HDFS)存储到关系中。 |
过滤 | |
FILTER | 从关系中删除不需要的行。 |
DISTINCT | 从关系中删除重复行。 |
FOREACH,GENERATE | 基于数据列生成数据转换。 |
STREAM | 使用外部程序转换关系。 |
分组和连接 | |
JOIN | 连接两个或多个关系。 |
COGROUP | 将数据分组为两个或多个关系。 |
GROUP | 在单个关系中对数据进行分组。 |
CROSS | 创建两个或多个关系的向量积。 |
排序 | |
ORDER | 基于一个或多个字段(升序或降序)按排序排列关系。 |
LIMIT | 从关系中获取有限数量的元组。 |
合并和拆分 | |
UNION | 将两个或多个关系合并为单个关系。 |
SPLIT | 将单个关系拆分为两个或多个关系。 |
诊断运算符 | |
DUMP | 在控制台上打印关系的内容。 |
DESCRIBE | 描述关系的模式。 |
EXPLAIN | 查看逻辑,物理或MapReduce执行计划以计算关系。 |
ILLUSTRATE | 查看一系列语句的分步执行。 |
源自:https://www.w3cschool.cn/apache_pig/apache_pig_reading_data.html
Pig latin基础的更多相关文章
- Pig Latin程序设计1
Pig是一个大规模数据分析平台.Pig的基础结构层包括一个产生MapReduce程序的编译器.在编译器中,大规模并行执行依据存在.Pig的语言包括一个叫Pig Latin的文本语言,此语言有如下特性: ...
- Pig Latin儿童黑话(java)
●假设单词以辅音字母開始,将词首的辅音字母字符串(第一个元音字母前的全部字母)从单词的开头移动到末尾,然后加上后缀ay,这样就形成了它的pig latin. ●假设单词以元音字母開始,仅仅须要 ...
- 把指定的字符串翻译成 pig latin。
freecodecamp上的算法题: 把指定的字符串翻译成 pig latin. Pig Latin 把一个英文单词的第一个辅音或辅音丛(consonant cluster)移到词尾,然后加上后缀 & ...
- 20190118-利用Python实现Pig Latin游戏
1.利用Python实现Pig Latin字母游戏 “Pig Latin”是一个英语儿童文字改写游戏,整个游戏遵从下述规则:a. 元音字母是‘a’.‘e’.‘i’.‘o’.‘u’.字母‘y’在不是第一 ...
- FCC-学习笔记 Pig Latin
FCC-学习笔记 Pig Latin 1>最近在学习和练习FCC的题目.这个真的比较的好,推荐给大家. 2>中文版的地址:https://www.freecodecamp.cn/;英文版 ...
- Pig语言基础-【持续更新中】
***本文参考了Pig官方文档以及已有的一些博客,并加上了自己的一些知识性的理解.目前正在持续更新中.*** Pig作为一种处理大规模数据的高级查询语言,底层是转换成MapReduce实现的, ...
- Pig Latin
function translate(str) { //return str; var list = ['a','e','i','o','u']; if(list.indexOf(str[0]) &g ...
- 用户输入内容转换成Pig Latin形式。
//(单词的第一个元音字母之前的一道单词后面,以"ay"结尾,英语单词首字母为元音字母或者没有元音字母的以“ay”为后缀.)package toPigLatin; import j ...
- Pig Latin JOIN (inner) 与JOIN (outer)的区别
1.内连接(自然连接): 只有两个表相匹配的行才能在结果集中出现 2.外连接: 包括 (1)左外连接(左边的表不加限制) (2)右外连接(右边的表不加限制) (3)全外连接(左右两表都不加限制) 3. ...
随机推荐
- 通过U盘启动vmware虚拟机
不能通过虚拟机的USB功能,而是通过硬盘映射功能实现,操作方法如下图. 1.添加硬盘,注意接口类型与启动系统的支持(XPPE不支持scsi,但10pe支持) 2.硬盘类型 3.选择U盘映射 4.按F2 ...
- 解决Sublime Text 3中文显示乱码问题
之前用Sublime Text 2,阅读了你是猴子派的救兵吗写的博客解决Sublime Text 2中文显示乱码问题,解决了问题. 后来嫌版本2启动太慢了,换成Sublime Text 3之后,发现网 ...
- static link:关于gcc连接静态库的几种方式
开发一个应用程序不可避免要使用多个第三方库(library).默认情况下,gcc采用动态连接的方式连接第三方库,比如指定-lpng,连接程序就会去找libpng.so. gcc提供了一个-static ...
- 修改String中的内容
例子:有一个字符串"abcdef",现在想让字符串中的字符各自加1,求修改后的字符 String 在Java中是不可修改的. 方法1:将String 变为字符数组,通过修改字符数组 ...
- asp.net利用HttpModule实现防sql注入和加载样式和JS文件
1.新建一个类,实现IHttpModule接口 代码如下: public class SqlHttpModule : IHttpModule { public void Dispose() { } p ...
- Redis单线程单进程为什么效率那么高
1.完全基于内存,绝大部分请求是纯粹的内存操作,非常快速.数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1): 2.数据结构简单,对数据操作也简单,Red ...
- JVM异常之:直接内存溢出
示例: package com.dxz.jvm; import java.lang.reflect.Field; import sun.misc.Unsafe; /** * @Described:直接 ...
- 堆叠箱子(基础dp)
P1086 时间限制: 1 Sec 内存限制: 128 MB提交: 38 解决: 27[提交][状态][讨论版][命题人:外部导入] 题目描述 现有N种箱子,每种箱子高度H_i,数量C_i.现选取 ...
- js堆和栈
一.栈 栈:英文为“stack”: 定义:一种存放数据的内存区域: 特点: ①LIFO,后进先出: 可视化描述: ②调用栈,函数或者子例程像堆积木一样存放,以实现层层调用: 函数调用形成一个栈帧: f ...
- 学习笔记之Data analysis
Data analysis - Wikipedia https://en.wikipedia.org/wiki/Data_analysis Data analysis is a process of ...