Pig Latin基础2 函数清单

Apache Pig:干货长文带你完全入门 本文内容来自Hadoop权威指南,个人阅读的时候顺带整理翻译而来,并加入了自己的理解以及实际运行的配置。涵盖了Pig的核心内容,非常值得细度。版本记录: 2016-07 初稿 1. 环境配置:wget http://mirror.bit.edu.cn/apache/pig/pig-0.15.0/pig-0.15.0.tar.gztar zxvf pig-0.15.0.tar.gz mv ./pig- 阅读详情

Pig Latin作为一种语言,内在的函数清单亦不早少数,类别详细如下


1:Eval Functions


a:AVG

求平均值,        针对int,long,float,double,bytearray有效

求平均值后,类型为long,long,double,double,double 

b:CONCAT

将两个字段合并

CONCAT (expression, expression)

A = LOAD 'data' as (f1:chararray, f2:chararray, f3:chararray);
DUMP A;

(apache,open,source)
(hadoop,map,reduce)
(pig,pig,latin)


X = FOREACH A GENERATE CONCAT(f2,f3);
DUMP X;
(opensource)
(mapreduce)
(piglatin)


c:COUNT


d:COUNT_STAR

计算一个包中的元素个数

X = FOREACH B GENERATE COUNT_STAR(A);


e:DIFF

比较一个元组中的两个fields,找出其中的差异部分

DIFF (expression, expression)

A = LOAD 'bag_data' AS (B1:bag{T1:tuple(t1:int,t2:int)},B2:bag{T2:tuple(f1:int,f2:int)});
DUMP A;
({(8,9),(0,1)},{(8,9),(1,1)})
({(2,3),(4,5)},{(2,3),(4,5)})
({(6,7),(3,7)},{(2,2),(3,7)})
DESCRIBE A;

a: {B1: {T1: (t1: int,t2: int)},B2: {T2: (f1: int,f2: int)}}


X = FOREACH A DIFF(B1,B2);
grunt> dump x;
({(0,1),(1,1)})
({})
({(6,7),(2,2)})


f:IsEmpty

判断一个bag或者map是否为空


g:MAX


A = LOAD 'student' AS (name:chararray, session:chararray, gpa:float);
DUMP A;
(John,fl,3.9F)
(John,wt,3.7F)
(John,sp,4.0F)
(John,sm,3.8F)
(Mary,fl,3.8F)
(Mary,wt,3.9F)
(Mary,sp,4.0F)
(Mary,sm,4.0F)
B = GROUP A BY name;
DUMP B;
(John,{(John,fl,3.9F),(John,wt,3.7F),(John,sp,4.0F),(John,sm,3.8F)})
(Mary,{(Mary,fl,3.8F),(Mary,wt,3.9F),(Mary,sp,4.0F),(Mary,sm,4.0F)})
X = FOREACH B GENERATE group,MAX(A.gpa);
DUMP X;
(John,4.0F)


h:MIN

配合group一起使用

A = LOAD 'student' AS (name:chararray, session:chararray, gpa:float);
DUMP A;
(John,fl,3.9F)
(John,wt,3.7F)
(John,sp,4.0F)
(John,sm,3.8F)
(Mary,fl,3.8F)
(Mary,wt,3.9F)
(Mary,sp,4.0F)
(Mary,sm,4.0F)
B = GROUP A BY name

DUMP B;
(John,{(John,fl,3.9F),(John,wt,3.7F),(John,sp,4.0F),(John,sm,3.8F)})
(Mary,{(Mary,fl,3.8F),(Mary,wt,3.9F),(Mary,sp,4.0F),(Mary,sm,4.0F)})
X = FOREACH B GENERATE group, MIN(A.gpa);
DUMP X;
(John,3.7F)
(Mary,3.8F)


i:SIZE

计算元素的个数,根据date type

A = LOAD 'data' as (f1:chararray, f2:chararray, f3:chararray);
(apache,open,source)
(hadoop,map,reduce)
(pig,pig,latin)

X = FOREACH A GENERATE SIZE(f1);
DUMP X;
(6L)
(6L)
(3L)


其中int,long,float,double返回都是1

chararray返回字符个数

bytearray返回字节个数

tuple返回fields个数

bag返回tuples个数

map返回key/values个数



j:SUM

实例

A = LOAD 'data' AS (owner:chararray, pet_type:chararray, pet_num:int);
DUMP A;
(Alice,turtle,1)
(Alice,goldfish,5)
(Alice,cat,2)
(Bob,dog,2)
(Bob,cat,2)
B = GROUP A BY owner;
DUMP B;
(Alice,{(Alice,turtle,1),(Alice,goldfish,5),(Alice,cat,2)})
(Bob,{(Bob,dog,2),(Bob,cat,2)})
X = FOREACH B GENERATEgroup, SUM(A.pet_num);
DUMP X;
(Alice,8L)
(Bob,4L)



k:TOKENIZE

分割字符,输出一个words的包

TOKENIZE(expression [, 'field_delimiter'])

实例

A = LOAD 'data' AS (f1:chararray);
DUMP A;
(Here is the first string.)
(Here is the second string.)
(Here is the third string.)
X = FOREACH A GENERATE TOKENIZE(f1);
DUMP X;
({(Here),(is),(the),(first),(string.)})
({(Here),(is),(the),(second),(string.)})
({(Here),(is),(the),(third),(string.)})


2:Load/Store Functions

针对压缩的处理规则

PigStorage 和TextLoader支持gzip和bzip

BinStorage不支持压缩

文件名以.gz或者.bz结尾


A = load ‘myinput.gz’;
store A into ‘myoutput.gz’;


A = load ‘myinput.bz’;
store A into ‘myoutput.bz’;


BinStorage

读取只读数据格式,不支持压缩,支持文件和目录,globs作为输入

a = load 'b.txt' as (id, f);
b = group a by id;
store b into 'g' using BinStorage();


a = load 'g/part*' using BinStorage() as (id, d:bag{t:(v, s)});
b = foreach a generate (double)id, flatten(d);
dump b;

针对*的数据可能存在数据转型错误,最好通过Converter转换

a = load 'g/part*' using BinStorage('Utf8StorageConverter') as (id,d:bag{t:(v, s)});
b = foreach a generate (double)id, flatten(d);
dump b;


JsonLoader,JsonStorage

加载和存储JSON数据

JsonLoader( [‘schema’] )

JsonStorage( )


a = load 'a.json' using JsonLoader('a0:int,a1:{(a10:int,a11:chararray)},a2:(a20:double,a21:bytearray),a3:[chararray]');
a = load 'a.json' using JsonLoader();


PigDump

将数据以UTF-8格式存储

PigDump()

STORE X INTO 'output' USING PigDump();


PigStorage

以结构化文本文件加载和存储数据

PigStorage( [field_delimiter] , ['options'] )


Load命令,期望数据通过field delimiters或者tab character('\')或者其它符号来分割

Store命令,利用field deliminters或者tab character或者其它字符,record delimiter('\n')


A = LOAD 'student' USING PigStorage('\t') AS (name: chararray, age:int,gpa: float);
A = LOAD 'student' AS (name: chararray, age:int, gpa: float);


STORE X INTO 'output' USING PigStorage('*');


a = load '1.txt' as (a0:{t:(m:map[int],d:double)});
{([foo#1,bar#2],34.0),([white#3,yellow#4],45.0)} : valid
{([foo#badint],baddouble)} : conversion fail for badint/baddouble, get
{([foo#],)}
{} : valid, empty bag


TextLoader

以UTF-8格式加载非架构化数据

TextLoader()

支持压缩,不能用于存储数据

A = LOAD 'data' USING TextLoader();


3:Math Functions

支持如下算数函数

ABS

ACOS

ASIN

ATAN

CBRT

CEIL

返回表达式最近的整数,并且>=表达式的值

x         CEIL(x)
4.6        5
3.5        4
2.4        3
1.0        1
-1.0      -1
-2.4       -2
-3.5       -3
-4.6       -4


COS

COSH

EXP

FLOOR

返回表达式最近点小于或者等于的整数,同CEIL相反

x FLOOR(x)
4.6 4
3.5 3
2.4 2
1.0 1
-1.0 -1
-2.4 -3
-3.5 -4
-4.6 -5


LOG

LOG10

RANDOM

ROUND

针对表达式,取整数,采取四舍五入

x         ROUND(x)
4.6       5
3.5       4
2.4        2
1.0        1
-1.0       -1


SIN

SINH

SQRT

TAN

TANH


4:String Functions

字符串函数自然必不可少

INDEXOF

LAST_INDEX_OF

LCFIRST

LOWER

REGEX_EXTRACT

根据正则表达式,来匹配截取数据

REGEX_EXTRACT (string, regex, index)

实例获取IP

REGEX_EXTRACT('192.168.1.5:8020', '(.*)\:(.*)', 1);


REGEX_EXTRACT_ALL

REPLACE

STRSPLIT

SUBSTRING

TRIM

UCFIRST
UPPER


5:Tuple,Bag,Map Functions


TOTUPLE

将一个或者多个表达式转换为tuple类型

TOTUPLE(expression [, expression ...])


a = LOAD 'student' AS (f1:chararray, f2:int, f3:float);
DUMP a;
(John,18,4.0)
(Mary,19,3.8)
(Bill,20,3.9)
(Joe,18,3.8)
b = FOREACH a GENERATE TOTUPLE(f1,f2,f3);
DUMP b;
((John,18,4.0))
((Mary,19,3.8))
((Bill,20,3.9))
((Joe,18,3.8))


TOBAG

将一个或者多个表达式转换为bag类型

TOBAG(expression [, expression ...])


a = LOAD 'student' AS (f1:chararray, f2:int, f3:float);
DUMP a;
(John,18,4.0)
(Mary,19,3.8)
(Bill,20,3.9)
(Joe,18,3.8)
b = FOREACH a GENERATE TOBAG(f1,f3);
DUMP b;
({(John),(4.0)})
({(Mary),(3.8)})
({(Bill),(3.9)})
({(Joe),(3.8)})


TOMAP

将key/value表达式转为为一个map

TOMAP(key-expression, value-expression [, key-expression, value-expression ...])


A = load 'students' as (name:chararray, age:int, gpa:float);
B = foreach A generate TOMAP(name, gpa);
store B into ‘results’;
Input (students)
joe smith 20 3.5
amy chen 22 3.2
leo allen 18 2.1
Output (results)
[joe smith#3.5]
[amy chen#3.2]
[leo allen#2.1]


TOP

从一个包中的多个tuples返回前n个tuples

TOP(topN,column,relation)

A = LOAD 'data' as (first: chararray, second: chararray);
B = GROUP A BY (first, second);
C = FOREACH B generate FLATTEN(group), COUNT(*) as count;
D = GROUP C BY first; // again group by first
topResults = FOREACH D {
result = TOP(10, 2, C); // and retain top 10 occurrences of 'second' in
first
GENERATE FLATTEN(result);
}

[JavaScript练习]儿童黑话 pig latin游戏 JavaScript的小练习,主要是正则表达式的复习。 阅读详情

相关推荐

Pig Latin脚本原理与代码实例讲解

Pig Latin脚本原理与代码实例讲解 1.背景介绍 Pig Latin是一种基于Pig的脚本语言,用于大数据处理和分析。Pig是一种高级数据流语言和执行框架,最初由Yahoo!研究院开发,旨在提供一种简单、高效的方式来分析大型数据集。Pig Latin是Pig的核心语言,它提供了

AI天才研究院 1099

Pig Latin 儿童黑话

今天听英语听到了一段对话,开头是Aniel-day eaking-spay, ow-hay ay-may I elp-hay ou-yay。这段音频听了好几遍,但是很不习惯这种,每个单词都以ay结尾的发音。到网上一查才知道这是儿童黑话(Pig Latin)是一种英语语言游戏,形式是在英语上加上一点规则使发音改变。 语法规则[如下: 1.如果一个词是由一个辅音字母开始的,就把第一个辅音字母提到这...

无为 的专栏 2215

【eNSP 华为模拟器】单臂路由实战:从原理到配置全解析

本文详细解析了单臂路由技术,通过华为eNSP模拟器从原理到配置进行实战教学。文章阐述了单臂路由如何利用路由器单物理接口创建多个子接口,实现不同VLAN间通信,并提供了完整的操作步骤、配置命令及排错方法,帮助网络工程师掌握这一经典网络技术。

699

pig中通过pigLatin来分析数据

pig中的表的都是装在内存中的,如果pig命令行退出后这些表也不复存在。 1、需要把Hadoop的JobHistory Server启动 mr-jobhistory-daemon.sh start historyserver Web Console:http://ip:19888/jobhistory 2、常用的PigLatin语句 (*)load:加载数据,创建表,相当于create table (*)foreac...

枣泥馅的博客 903

半桥LLC谐振变换器及同步整流MATLAB仿真(一)

LLC工作原理详细解析,工作过程详细拆解

qq_55203246的博客 3万+

E28 LoRa模块透传 定点传输 RSSI测试与MicroPython应用

测试说明 测试模块数:3 测试模式:配置模式和传输模式 如果没有检测到串口,首先检查是否安装串口驱动CH341SER,下载链接,提取码:vaw2 工作模式 模式(0-3) M2 M1 M0 模式介绍 备注 0 传输模式 1 0 0 串口打开,无线打开,连续透明传输 空速支持手动配置和自适应波特率自动调节;连续模式双方波特率必须一致 1 RSSI 1 0 1 串口打开,无线打开,RSSI功能打开 模块每100ms输出RSSI强度值 2 测距模式 1 1 0 保留 - 3 配置模式

GniLAY1022的博客 4243

使用PIG Latin 进行编程,Pig Latin语言详解

使用PIG Latin 进行编程 在这篇文章中,我们将介绍以下几点: 安装、配置PIG LatinPIG Latin关键字及数据类型上载及下载数据至HDFS载入文本数据存储数据排序逐行排序过滤分组剔除重复项Cross JoinJoin其他 安装、配置PIG Latin PIG 并不依赖安装路径,换句话说你可以将 PIG 安装在任意路径。但需要注意一点,正如 Apache 的项目是运

奔向新世界 7121

【论文精读】Formal Mathematical Reasoning: A New Frontier in AI

注:本文根据师兄汇报内容总结。

m0_60634555的博客 1189

Pig Latin练习-python

“Pig Latin”是一个英语儿童文字改写游戏,整个游戏遵从下述规则: (1). 元音字母是‘a’、‘e’、‘i’、‘o’、‘u’。字母‘y’在不是第一个字母的情况下,也被视作元音字母。其他字母均为辅音字母。例如,单词“yearly”有三个元音字母(分别为‘e’、‘a’和最后一个‘y’)和三个辅音字母(第一个‘y’、‘r’和‘l’)。 (2). 如果英文单词以元音字母开始,则

winter13292的专栏 9027

微信小程序利用Echarts加载中国地图的步骤

微信小程序如何利用Echarts加载地图?可按照如下四个步骤进行。(阅读时间大概3分钟)。

成都都成 5279

计算机视觉安防监控升级:人脸识别与行为异常检测

计算机视觉安防监控升级:人脸识别与行为异常检测 ,人工智能,计算机视觉,大模型,AI,本文将深入探讨人脸识别与行为异常检测技术在安防监控中的应用,包括技术原理、算法实现、应用场景以及面临的挑战与解决方案。通过实际案例和代码示例,帮助读者更好地理解和掌握这些技术,为推动安防监控系统的智能化升级提供参考。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 23万+

Pig 关系运算符

将HDFS中的/pig_input目录下的student.txt和score.txt两个文件中的数据分别加载到student和score关系中,并进行左外连接操作。将HDFS的/pig_input目录下的student.txt和score.txt中的数据加载到关系中,对student和score进行内连接操作。BinStorage() 使用机器可读写格式将数据加载并存储到Pig中。JsonLoader() 将非Json数据加载到Pig中。TextLoader() 将非结构化数据加载到Pig中。

weixin_51309151的博客 1292

YOLOv8改进---BiFPN特征融合

yolov8结合BiFPN进行改进

qq_41920323的博客 4523

Python学习——Pig Latin小游戏

Pig Latin是一个语言游戏

阿木寺的博客 2294

74.9008深度刷机原理|高通QPST/Firehose底层刷写协议详解

移动设备刷机与底层维修技术指南 本文为移动设备维修人员和高级玩家提供全面的刷机与底层维修技术指南,涵盖高通、联发科和苹果A系列芯片的主要操作。 主要内容 核心操作:Bootloader解锁、Fastboot刷写、EDL深度修复、iTunes DFU模式恢复和分区表重建 适用场景:系统故障修复、底层损坏恢复、安全限制解除、系统降级和深度硬件维修 关键技术:详细解析刷机协议栈层级、关键分区作用和刷机安全机制 操作步骤: 环境搭建与驱动安装 Bootloader解锁(以小米为例) 高通机型系统刷写 苹果设备DFU

2601_95651806的博客 205

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Python——Pig Latin

“Pig Latin”是一个英语儿童文字改写游戏,整个游戏遵从下述规则: (1). 元音字母是‘a’、‘e’、‘i’、‘o’、‘u’。字母‘y’在不是第一个字母的情况下,也被视作元音字母。其他字母均为辅音字母。例如,单词“yearly”有三个元音字母(分别为‘e’、‘a’和最后一个‘y’)和三个辅音字母(第一个‘y’、‘r’和‘l’)。 (2). 如果英文单词以元音字母开始,则在单词末

TodLiuMeng的专栏 1739

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Python小程序:Pig Latin

Pig Latin 是一种傻乎乎的、可伪造的语言, 它会改变英语单词。如果单词以元音开头,就在单词末尾添加yay。如果单词以辅音或辅音簇(例如ch或gr)开头,那么该辅音或辅音簇会移至单词的末尾,然后加上ay该程序的工作原理是用本章介绍的方法更改字符串。

jv_mm的博客 2098

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

UVA492 Pig-Latin【文本】

You have decided that PGP encryptation is not strong enough for your email. You have decided to supplement it by first converting your clear text letter into Pig Latin before encrypting it with PGP. I...

海岛Blog 1146

Pig学习教程

Pig学习 1、Pig Latin简介 Pig是用来处理大规模数据的高级查询语言,结合Hadoop使用,可以在处理海量数据时达到事半功倍的效果。 Pig语句通常按照如下的格式来编写: ❑通过LOAD语句从文件系统读取数据。 ❑通过一系列“关系转换”语句对数据进行处理。 ❑通过STORE语句把处理结果输出到文件系统中,或使用DUMP语句把处理结果输出到屏幕上。 Pig有两种运行模式:Local模式和MapReduce模式。 Pig Latin是一种面向数据流的编程语言,一条语句就是一个操作,得

qq_27960935的博客 2865

(codewars)Simple Pig Latin

题目 题目链接 Move the first letter of each word to the end of it, then add “ay” to the end of the word. Leave punctuation marks untouched. Examples pigIt('Pig latin is cool'); // igPay atinlay siay oolcay pigIt('Hello world !'); // elloHay orldway ! Tests

WormholeStack 824

Python 小练习 Pig Latin

要求将输入的单词,第一个单词移到,末尾,并添加ay 比如输入 number,输出结果为umbernay 当然,还要判断输入是否为有效单词 以下是自己的练习答题 def pig():  key=input('please enter the work:\n')  if type(key) is str:   key=(key[1:]+key[0]+'ay')   print(key)

bestallen的博客 1932

Pig-Latin

编程基础——函数调用 1.1:Pig-Latin 题目: 输入和输出: • 请您编写一个程序,输入任意数量行的文本,并以Pig Latin输出。 每行文本将包含一个或多个单词。一个“单词”被定义为一个连 续的字母序列(大写字母和/或小写字母)。单词根据以下的规则 转换为Pig Latin,非单词的字符在输出时则和输入中出现的完全 一样: • [1] 以元音字母(a、e、i、o或u,以及这些字母的大写形式)开 头的单词,要在其后面附加字符串“ay”(不包括双引号)。例 如,“apple”变成“appleay”

weixin_51567056的博客 870

python 学习之 Pig Latin

write a Pig Latin translatorPig Latin is a language game, where you move the first letter of the word to the end and add “ay.” So python become ythonpay. just like this. the codeprint 'Welcome to the P

Eric Ray的博客 1557

Pig Latin语言运算符

运算符(使用本地模式) 1.LOAD运算符 LOAD ‘路径名’ USING PigStroage(‘分割符’) AS (表结构) 注 路径名如果是 本地模式,就是linux路径 若是mapreducer模式则是 hdfs路径 ,分割符默认是 ‘\t’ 2.DUMP(查看关系中的数据是以元组的形式返回) 3.DESCRIBE 关系名 小结:以上三个操作,类似于将文件内容导入数据表中 ...

Gao__xi的博客 830
上一篇: pig 自定义加载函数加载apache 的access.log中的数据
下一篇: Hadoop pig进阶语法
hxpjava1
博客等级 码龄19年 1365粉丝 511原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值