判断某个网站的前缀,并给其打上特定的标签值:
一个java代码例子如下:
- public String getTag(){
- //url文本
- String url="http://www.baidu.com.cn";
- //标签值
- String tags=null;
- if(url.startsWith("http://www.baidu")){
- tags="1";
- }else if(url.startsWith("http://www.dhx")){
- tags="2";
- }else{
- tags="0";
- }
- return url;
- }
public String getTag(){ //url文本 String url="http://www.baidu.com.cn"; //标签值 String tags=null; if(url.startsWith("http://www.baidu")){ tags="1"; }else if(url.startsWith("http://www.dhx")){ tags="2"; }else{ tags="0"; } return url; }
原来我的解决方法,是写了个UDF函数,来搞定,后来想了想使用UDF虽然比较灵活,但是侵入性比较强,过程比较繁琐,尤其是还得maven打成jar包,注册pig的udf函数,所以,便可以使用pig的replace的函数,来解决:
REPLACE函数用法:
REPLACE(str,regex,str2):
解释一下,三个参数
第一个是原始数据
第二个是匹配的正则 ,需要注意一些特殊字符需要转义, java中匹配任何字符的正则式时.*
第三个是替换后的内容
例子数据:
- 1,2,3
- 2,1,3
- 6,7,1
- 1,4,4
- 121,45,100
- 100,23,12
- 600,12,50
- 4,1,2
- http://www.baidu.com,1,2
- http://www.video.baidu.com,1,2
- http://www.souhu.com.cn,1,2
- http://www.dh.com,1,2
- http://www.es.dh.com,1,2
- http://www.baidu.com,1,2
- http://www.baidu.com,1,2
1,2,3 2,1,3 6,7,1 1,4,4 121,45,100 100,23,12 600,12,50 4,1,2 http://www.baidu.com,1,2 http://www.video.baidu.com,1,2 http://www.souhu.com.cn,1,2 http://www.dh.com,1,2 http://www.es.dh.com,1,2 http://www.baidu.com,1,2 http://www.baidu.com,1,2
需求,将第一列等于1的和以http://www.baidu开头的内容,替换成对应的中文称呼:
pig脚本如下:
- a = load '/test' using PigStorage(',');
- --其他特殊字符需要转义 最后的.*代表,替换所有内容为指定内容
- a = foreach a generate REPLACE($0,'^http:\\/\\/www\\.baidu.*','百度') , $1 ;
- --多次替换可执行多个foreach过滤
- a = foreach a generate REPLACE($0,'^1$','一') , $1 ;
- dump a;
a = load '/test' using PigStorage(','); --其他特殊字符需要转义 最后的.*代表,替换所有内容为指定内容 a = foreach a generate REPLACE($0,'^http:\\/\\/www\\.baidu.*','百度') , $1 ; --多次替换可执行多个foreach过滤 a = foreach a generate REPLACE($0,'^1$','一') , $1 ; dump a;
执行结果如下:
- (一,2)
- (2,1)
- (6,7)
- (一,4)
- (121,45)
- (100,23)
- (600,12)
- (4,1)
- (百度,1)
- (http://www.video.baidu.com,1)
- (http://www.souhu.com.cn,1)
- (http://www.dh.com,1)
- (http://www.es.dh.com,1)
- (百度,1)
- (百度,1)
(一,2) (2,1) (6,7) (一,4) (121,45) (100,23) (600,12) (4,1) (百度,1) (http://www.video.baidu.com,1) (http://www.souhu.com.cn,1) (http://www.dh.com,1) (http://www.es.dh.com,1) (百度,1) (百度,1)
这种方式,适合逻辑不是特别复杂的情况下使用,总体来看,比较简单方便易懂
相关推荐
pig udf,实现了 urldecode、 row_number、 tomap.版本使用cdh4.1.2,如果需要在别的版本中使用,请替换工程文件中的两个jar包,对应您需要的版本。
支持大多数 Pig 函数和关键字的语法突出显示和命令完成。 Build (Super+B) 将在“pig -x local”下运行脚本。 问题 错误行突出显示不起作用。 目前一些次要的关键字和功能。 安装 简单的 难的 更改为 Sublime ...
《Pig编程指南》不仅为初学者讲解ApachePig的基础知识,同时也向有一定使用经验的高级用户介绍更加综合全面的Pig重要特性,如PigLatin脚本语言、控制台shell交互命令以及用于对Pig进行拓展的用户自定义函数(UDF)等。...
apache pig 基础及应用,urldecode row_number web日志分析 根据 用户行为 做出 简易的 相似度 判断。
利用遗传算法求解函数的最值,函数y=x+10sin(5x)+7cos(4x),存在多个极值点。
Oink 是基于 Servlet 的 Pig ,提供以下功能:注册/注销/查看 Pig 脚本注册/注销/查看 jar 文件 (用于自定义 UDF 函数)执行 Pig 工作查看 Pig 工作的数据/状态取消一个 Pig 工作 标签:oink
大数据与云计算教程课件 优质大数据课程 21.Pig模式与函数(共64页).pptx 大数据与云计算教程课件 优质大数据课程 22.Zookeeper(共28页).pptx 大数据与云计算教程课件 优质大数据课程 23.Zookeeper服务(共47页)...
JsonLoader :用于任意 JSON 文件的 Pig 加载函数(不仅仅是 JsonStorage 生成的文件) FromJsonInferSchema :包装 JsonLoader 以将字符数组(字符串)字段中的 JSON 转换为 Map 的 Pig UDF。 推断输出的模式。 ...
猪拉丁语翻译器接收文本并将其翻译成Pig Latin
基本信息有关 Pig 的最新信息,请访问我们的网站: 和我们的维基,在:入门要了解 Pig,请尝试 要构建和运行 Pig,请尝试和 要查看函数库,请尝试为项目做贡献我们欢迎所有贡献。 有关详细信息,请访问 。
这个框架里面通过Pig的UDF函数封装了Store方法,只要Pig能读的任何数据源,我们都可以通过Store函数,将结果轻而易举的存储到我们的索引里面, ####使用步骤 (1)下载源码后,根据自己的业务情况,稍作修改,然后...
BP神经网络的理论介绍,公式推演,以及通过拟合函数实例进行仿真模拟
C语言piglatin转换 从终端读入一行文本,并把这行文本中的英文转换成PigLatin,PigLatin是按照如下简单规则转换每个英文单词的一种自发明语言。
规格pigLatin函数采用称为短语的字符串pigLatin函数查看字符串中的一个或多个单词pigLatin函数查看每个单词以将其转换为Pig Latin pigLatin通过以下方式将每个单词转换为Pig Latin: 对于以元音开头的单词,请在结尾...
函数:raw_input()用于输出一个字符串并等待键盘输入某字符串,最后以Enter(或Return)结束输入 original = raw_input("Enter a word:") print original 上述中,控制台会输出What’s your name?,并等待用户键盘...