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基础的更多相关文章

  1. Pig Latin程序设计1

    Pig是一个大规模数据分析平台.Pig的基础结构层包括一个产生MapReduce程序的编译器.在编译器中,大规模并行执行依据存在.Pig的语言包括一个叫Pig Latin的文本语言,此语言有如下特性: ...

  2. Pig Latin儿童黑话(java)

     ●假设单词以辅音字母開始,将词首的辅音字母字符串(第一个元音字母前的全部字母)从单词的开头移动到末尾,然后加上后缀ay,这样就形成了它的pig  latin. ●假设单词以元音字母開始,仅仅须要 ...

  3. 把指定的字符串翻译成 pig latin。

    freecodecamp上的算法题: 把指定的字符串翻译成 pig latin. Pig Latin 把一个英文单词的第一个辅音或辅音丛(consonant cluster)移到词尾,然后加上后缀 & ...

  4. 20190118-利用Python实现Pig Latin游戏

    1.利用Python实现Pig Latin字母游戏 “Pig Latin”是一个英语儿童文字改写游戏,整个游戏遵从下述规则:a. 元音字母是‘a’.‘e’.‘i’.‘o’.‘u’.字母‘y’在不是第一 ...

  5. FCC-学习笔记 Pig Latin

    FCC-学习笔记  Pig Latin 1>最近在学习和练习FCC的题目.这个真的比较的好,推荐给大家. 2>中文版的地址:https://www.freecodecamp.cn/;英文版 ...

  6. Pig语言基础-【持续更新中】

      ***本文参考了Pig官方文档以及已有的一些博客,并加上了自己的一些知识性的理解.目前正在持续更新中.***   Pig作为一种处理大规模数据的高级查询语言,底层是转换成MapReduce实现的, ...

  7. Pig Latin

    function translate(str) { //return str; var list = ['a','e','i','o','u']; if(list.indexOf(str[0]) &g ...

  8. 用户输入内容转换成Pig Latin形式。

    //(单词的第一个元音字母之前的一道单词后面,以"ay"结尾,英语单词首字母为元音字母或者没有元音字母的以“ay”为后缀.)package toPigLatin; import j ...

  9. Pig Latin JOIN (inner) 与JOIN (outer)的区别

    1.内连接(自然连接): 只有两个表相匹配的行才能在结果集中出现 2.外连接: 包括 (1)左外连接(左边的表不加限制) (2)右外连接(右边的表不加限制) (3)全外连接(左右两表都不加限制) 3. ...

随机推荐

  1. 黄聪:C#“多线程线程间操作无效: 从不是创建控件的线程访问它。”,跨线程修改控件属性解决方案

    解决方案就是使用代理,在代理中调用主线程的方法来控制控件 /// <summary> /// 声明代理 /// </summary> delegate void SetText ...

  2. Java-Runoob-高级教程-实例-时间处理:01. Java 实例 - 格式化时间(SimpleDateFormat)

    ylbtech-Java-Runoob-高级教程-实例-时间处理:01. Java 实例 - 格式化时间(SimpleDateFormat) 1.返回顶部 1. Java 实例 - 格式化时间(Sim ...

  3. CentOS搭建SVN服务器,并通过Apache HTTP方式访问

    摘要:本文主要讲述了在centos 6.5环境下搭建svn服务器,可通过svn:\\IP方式访问.同时由于部分公司内网端口限制,并不能访问外网的svn服务器,所以特地结合了apache服务器,使得可以 ...

  4. [转]Windows7:Visual Studio 2008试用版的评估期已经结束解决方法

    原文来自:http://blog.sina.com.cn/s/blog_6b1815080100y5z3.html     以前在Windows2003碰到这个问题时,都是到"控制面板→添加 ...

  5. HDOJ 2004 成绩转换

    #include<cstdio> #include<iostream> using namespace std; int main() { int score; while ( ...

  6. RabbitMQ入门教程(十):队列声明queueDeclare(转载)

    原文转载至:https://blog.csdn.net/vbirdbest/article/details/78670550 简介本节主要讨论队列声明的各个参数 queueDeclare(String ...

  7. echarts饼图配置

    js引用和配置div <div id="container" style="height: 100%"></div> <scrip ...

  8. 打通WordPress和微信公众号

    现在还坚持写博客的人越来越少,我的博客这几年也更新很少.写博客文章的人少了,有不少人都转战到微信公众号里去写文章了.相对于博客,微信公众号(特别是订阅号)是一个相对封闭.去中心化的平台,在移动互联网时 ...

  9. cocos源码分析--LayerColor的绘制过程

    1开始,先创建一个LayerColor Scene *scene=Scene::create(); director->runWithScene(scene); //目标 auto layer ...

  10. Flume+HBase+Kafka集成与开发

    先把flume1.7的源码包下载 http://archive.apache.org/dist/flume/1.7.0/ 下载解压后 我们通过IDEA这个软件来打开这个工程 点击ok后我们选择打开一个 ...