判断某个网站的前缀,并给其打上特定的标签值:
一个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)
这种方式,适合逻辑不是特别复杂的情况下使用,总体来看,比较简单方便易懂
相关推荐
用户定义的函数(User Defined Functions, UDFs)是 Pig 功能的重要组成部分,允许用户扩展其内在功能以满足特定需求。在这个主题中,我们将深入探讨 `urldecode`、`row_number` 和 `tomap` 这三个 UDF 在 Pig 中的...
2. **Pig UDF(用户定义函数)**: Pig支持用户自定义函数,以扩展其功能。源码中,UDF的注册、调用及执行流程清晰可见。这包括了对Java和Python UDF的支持,以及如何将UDF集成到Pig Latin语句中进行数据转换和处理...
同时,Pig还支持自定义函数(UDF),源码包中的FuncSpec和GenericUDF接口展示了如何扩展Pig的功能。 5. 执行模型:Pig的执行模型基于Hadoop,它将Pig Latin脚本转化为一系列的MapReduce作业。源码中,Executor和...
Pig基础教程涵盖了Pig语言的基本概念、语法、数据类型、操作符和内置函数,这些都是使用Pig进行数据处理和分析的基础。 首先,教程中会介绍Pig Latin的基本语法约定。Pig Latin语法遵循一定的规则,例如,小括号“...
Pig Latin虽然强大,但有时仍需自定义函数来实现特定的业务逻辑。Pig支持两种类型的UDFs:内建UDFs(eval functions)和管道UDFs(ALIAS functions)。编程猪的源码可能包含多个自定义函数示例,展示了如何编写和...
3. **UDF(用户定义函数)扩展**:0.7.0版本提供了更多的内置UDF,同时也支持用户自定义UDF,这极大地增强了Pig的功能性和灵活性。用户可以通过编写Java代码或使用其他语言(如Python或JavaScript)来扩展Pig的功能...
- **Pig UDF (User Defined Function)**:介绍如何自定义Pig函数。 #### 八、Mahout示例 - **前提**:了解Mahout的基本概念和算法库。 - **概要**:Mahout是一个用于机器学习和数据挖掘的开源项目。 - **提供的...
支持大多数 Pig 函数和关键字的语法突出显示和命令完成。 Build (Super+B) 将在“pig -x local”下运行脚本。 问题 错误行突出显示不起作用。 目前一些次要的关键字和功能。 安装 简单的 难的 更改为 Sublime ...
- **新功能**:引入了一些新的内置函数和操作符,增强了数据处理的灵活性,比如窗口函数,支持更复杂的统计分析。 - **稳定性提升**:增强了错误处理和恢复机制,使得在大型数据处理过程中更加健壮。 4. **使用...
在Pig中,Java编程主要用于开发UDF(用户定义函数),这些函数可以是Java类,用于处理Pig无法直接处理的数据格式或业务逻辑。例如,如果你需要对数据进行特定的字符串处理或者应用复杂的数学计算,你可以编写一个...
《Pig编程指南》不仅为初学者讲解ApachePig的基础知识,同时也向有一定使用经验的高级用户介绍更加综合全面的Pig重要特性,如PigLatin脚本语言、控制台shell交互命令以及用于对Pig进行拓展的用户自定义函数(UDF)等。...
- **复杂查询**:对于需要执行多步操作的复杂查询,Pig提供了一系列丰富的内置函数和支持多种数据类型的能力。 #### 四、Pig的使用方式 Pig支持多种使用方式,包括: 1. **命令行模式**:通过`pig`命令进入交互式...
3. 函数和操作符:包括内置的PIG函数,如`UDF`(用户定义函数)和算术运算符,如`+`, `-`, `*`, `/`, `%`等。 4. 注释:单行注释(`--`开始)和多行注释(`/* ... */`)会被识别并以不同的颜色显示,方便阅读和理解...
在本书中,作者提供了丰富的样例脚本、用户定义函数(UDF)以及数据集,帮助读者理解并掌握Pig语言的精髓。Pig是Hadoop生态系统中的一个高级数据处理工具,其设计目标是简化大规模数据集的分析任务,通过提供一种...
此外,Pig还支持用户自定义函数(UDF),这使得Pig可以扩展使用Java、Python、JavaScript等其他语言编写的函数,从而执行更复杂的数据处理任务。这为Pig提供了极大的灵活性和强大的处理能力。 最后,由于Pig与...
在这个具体问题中,`pig11i`可能是作者或程序的一个标识符,而`juus`可能是作者的名字或者程序的版本。`GA适应度函数`和`遗传算法GA`标签明确了程序的核心特性,即使用遗传算法解决适应度函数定义的问题。 通过这个...
- **UDFs(User Defined Functions)**: 用户可以根据需要编写自定义函数(UDFs),以扩展Pig的功能,处理特定的数据转换或分析任务。 - **Performance优化**: Pig支持多种性能优化策略,如使用`ORDER BY`和`GROUP ...
这个版本可能包括了新的函数、操作符和优化器,使得数据转换和分析更加强大和灵活。 描述中的“pig-0.15.0.tar.gz”提及的是软件的归档文件,通常包含所有必要的源代码、文档、配置文件等,供用户下载、编译和安装...