Pig学习教程

本文是Pig学习教程,详细介绍了Pig Latin语言,包括Pig的数据类型、与Hive的比较、运行模式(Local和MapReduce)以及常用操作如LOAD、STORE、GROUP、FILTER等,帮助理解Pig在大数据处理中的作用。
摘要由CSDN通过智能技术生成

Pig学习

1、Pig Latin简介

Pig是用来处理大规模数据的高级查询语言,结合Hadoop使用,可以在处理海量数据时达到事半功倍的效果。

Pig语句通常按照如下的格式来编写:

  • ❑通过LOAD语句从文件系统读取数据。

  • ❑通过一系列“关系转换”语句对数据进行处理。

  • ❑通过STORE语句把处理结果输出到文件系统中,或使用DUMP语句把处理结果输出到屏幕上。

Pig有两种运行模式:Local模式和MapReduce模式。

Pig Latin是一种面向数据流的编程语言,一条语句就是一个操作,得到一个关系,一个Pig Latin程序由一组语句构成。

Pig Latin中常用命令有LOAD, STORE, FILTER, FOREACH,GROUP, ORDER, SPLIT, JOIN等。

image-20201101221119258

常用交互命令

image-20201101221418643

2、Pig数据类型

Pig拥有丰富的数据类型,主要可以分为两大类:基本类型和复杂类型。

image-20201101221641543

针对复杂数据类型举例说明如下。

  • 元组:字段或属性值的集合。例如:

    (OH, Mark, Twain,31225)
    
  • 包:元组的无序集合,大括号内元组之间用逗号分隔。例如:

    {
    (OH,Mark,Twain,31225),
    (UK,Charles,Dickens,42207),
    (ME,Robert,Frost,11496)
    }
    
  • 映射:键值对的集合,中括号内,键与值之间以#分隔(#是系统默认,不可更改),键值对之间用逗号分隔。例如:

[state#OH,name#Mark Twain,zip#31225]

3、Pig与Hive比较

Pig与Hive基于其特性对比

image-20201101222245193

  • 语言:两者都有对应的操作语言,编写的程序最后都转换为MapReduce程序运行。

  • 表概念:Hive中有一个“表”的概念,但Pig中没有表的概念。

  • 远程服务:Hive可以依托于Thrift启动一个远程服务,提供远程调用;Pig中没有这样的功能。

  • 自定义函数:两者都提供UDF,可根据用户需求来自定义函数。

  • Shell命令行:都有其对应的Shell命令行,而且Pig可以直接执行ls、cat这样的命令,但Hive不支持这样使用。

  • Web访问接口:Hive支持通过浏览器访问,可以在Web页面中编写HiveQL语句;Pig不支持Web访问。

  • JDBC/ODBC:Hive可以通过JDBC/ODBC远程访问Hive,远程需要启动HiveServer2服务;Pig不支持远程调用。

Pig Latin是面向数据流的编程语言,而HiveQL是一种描述型编程语言,二者最大的区别在于对作业执行方式的控制粒度不同。

同样一个任务,HiveQL只需定义要执行的操作即可,HiveQL查询规划器会负责安排HiveQL命令的执行顺序等。而Pig Latin类似于直接在查询规划器这一层操作数据,因此需要用户自己一步一步地根据数据流的处理方式来编程,即用户要设计数据流的每一个步骤。

Hive和Pig的选用最终取决于用户需求,如果用户更希望使用熟悉的SQL接口操作数据,很明显应当选用Hive。但如果有专门人员以数据流水线的方式考虑问题,并需要对作业运行方式进行更细粒度的控制,那么Pig可能会是一个更好的选择。

4、Pig的运行模式

有本地模式(Local模式)和MapReduce模式,每种运行模式都有3种运行方式,分别为:Grunt Shell方式、脚本文件方式、嵌入式程序方式。下面将对运行模式及方式进行介绍。

4.1.本地模式

本地运行模式下,Pig运行在单个JVM中,访问本地文件系统,该模式用于测试或处理小规模数据集。

(1)Grunt Shell方式Grunt Shell和Windows中的DOS窗口非常类似,在这里用户可以一条一条地输入命令对数据进行操作,启动命令如下所示。

pig -x local

(2)脚本文件方式使用脚本文件作为批处理作业来运行Pig命令,它实际上是第一种运行方式中命令的集合,使用如下命令可以运行Pig脚本。

pig -x local script.pig
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jarvis数据之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值