`
weitao1026
  • 浏览: 1048938 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论
阅读更多

判断某个网站的前缀,并给其打上特定的标签值:

一个java代码例子如下:

Java代码
  1. public String  getTag(){  
  2.     //url文本  
  3.     String url="http://www.baidu.com.cn";  
  4.     //标签值  
  5.     String tags=null;  
  6.     if(url.startsWith("http://www.baidu")){  
  7.         tags="1";  
  8.     }else if(url.startsWith("http://www.dhx")){  
  9.         tags="2";  
  10.     }else{  
  11.         tags="0";  
  12.     }  
  13.     return url;  
  14. }  
    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中匹配任何字符的正则式时.*
第三个是替换后的内容


例子数据:


Java代码 复制代码 收藏代码
  1. 1,2,3  
  2. 2,1,3  
  3. 6,7,1  
  4. 1,4,4  
  5. 121,45,100  
  6. 100,23,12  
  7. 600,12,50  
  8. 4,1,2  
  9. http://www.baidu.com,1,2  
  10. http://www.video.baidu.com,1,2  
  11. http://www.souhu.com.cn,1,2  
  12. http://www.dh.com,1,2  
  13. http://www.es.dh.com,1,2  
  14. http://www.baidu.com,1,2  
  15. 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脚本如下:


Java代码 复制代码 收藏代码
  1. a = load '/test' using PigStorage(',');  
  2. --其他特殊字符需要转义 最后的.*代表,替换所有内容为指定内容  
  3. a = foreach a generate  REPLACE($0,'^http:\\/\\/www\\.baidu.*','百度') , $1 ;  
  4. --多次替换可执行多个foreach过滤  
  5. a = foreach a generate REPLACE($0,'^1$','一') , $1 ;   
  6.   
  7. 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;




执行结果如下:

Java代码 复制代码 收藏代码
  1. (一,2)  
  2. (2,1)  
  3. (6,7)  
  4. (一,4)  
  5. (121,45)  
  6. (100,23)  
  7. (600,12)  
  8. (4,1)  
  9. (百度,1)  
  10. (http://www.video.baidu.com,1)  
  11. (http://www.souhu.com.cn,1)  
  12. (http://www.dh.com,1)  
  13. (http://www.es.dh.com,1)  
  14. (百度,1)  
  15. (百度,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)

    用户定义的函数(User Defined Functions, UDFs)是 Pig 功能的重要组成部分,允许用户扩展其内在功能以满足特定需求。在这个主题中,我们将深入探讨 `urldecode`、`row_number` 和 `tomap` 这三个 UDF 在 Pig 中的...

    pig源码0.15版

    2. **Pig UDF(用户定义函数)**: Pig支持用户自定义函数,以扩展其功能。源码中,UDF的注册、调用及执行流程清晰可见。这包括了对Java和Python UDF的支持,以及如何将UDF集成到Pig Latin语句中进行数据转换和处理...

    pig的源码包

    同时,Pig还支持自定义函数(UDF),源码包中的FuncSpec和GenericUDF接口展示了如何扩展Pig的功能。 5. 执行模型:Pig的执行模型基于Hadoop,它将Pig Latin脚本转化为一系列的MapReduce作业。源码中,Executor和...

    pig官方基础教程

    Pig基础教程涵盖了Pig语言的基本概念、语法、数据类型、操作符和内置函数,这些都是使用Pig进行数据处理和分析的基础。 首先,教程中会介绍Pig Latin的基本语法约定。Pig Latin语法遵循一定的规则,例如,小括号“...

    pig编程指南源码

    Pig Latin虽然强大,但有时仍需自定义函数来实现特定的业务逻辑。Pig支持两种类型的UDFs:内建UDFs(eval functions)和管道UDFs(ALIAS functions)。编程猪的源码可能包含多个自定义函数示例,展示了如何编写和...

    pig-0.7.0.tar.gz

    3. **UDF(用户定义函数)扩展**:0.7.0版本提供了更多的内置UDF,同时也支持用户自定义UDF,这极大地增强了Pig的功能性和灵活性。用户可以通过编写Java代码或使用其他语言(如Python或JavaScript)来扩展Pig的功能...

    英特尔Hadoop发行版 2.2 开发者指南

    - **Pig UDF (User Defined Function)**:介绍如何自定义Pig函数。 #### 八、Mahout示例 - **前提**:了解Mahout的基本概念和算法库。 - **概要**:Mahout是一个用于机器学习和数据挖掘的开源项目。 - **提供的...

    Pig:Sublime Text 2 和 3 中的 Apache Pig 支持包

    支持大多数 Pig 函数和关键字的语法突出显示和命令完成。 Build (Super+B) 将在“pig -x local”下运行脚本。 问题 错误行突出显示不起作用。 目前一些次要的关键字和功能。 安装 简单的 难的 更改为 Sublime ...

    pig-0.9.2.tar.gz下载

    - **新功能**:引入了一些新的内置函数和操作符,增强了数据处理的灵活性,比如窗口函数,支持更复杂的统计分析。 - **稳定性提升**:增强了错误处理和恢复机制,使得在大型数据处理过程中更加健壮。 4. **使用...

    pig java 编程jar包

    在Pig中,Java编程主要用于开发UDF(用户定义函数),这些函数可以是Java类,用于处理Pig无法直接处理的数据格式或业务逻辑。例如,如果你需要对数据进行特定的字符串处理或者应用复杂的数学计算,你可以编写一个...

    Pig编程指南

    《Pig编程指南》不仅为初学者讲解ApachePig的基础知识,同时也向有一定使用经验的高级用户介绍更加综合全面的Pig重要特性,如PigLatin脚本语言、控制台shell交互命令以及用于对Pig进行拓展的用户自定义函数(UDF)等。...

    大数据之pig 命令

    - **复杂查询**:对于需要执行多步操作的复杂查询,Pig提供了一系列丰富的内置函数和支持多种数据类型的能力。 #### 四、Pig的使用方式 Pig支持多种使用方式,包括: 1. **命令行模式**:通过`pig`命令进入交互式...

    pig-npp:记事本++的PIG脚本语法突出显示

    3. 函数和操作符:包括内置的PIG函数,如`UDF`(用户定义函数)和算术运算符,如`+`, `-`, `*`, `/`, `%`等。 4. 注释:单行注释(`--`开始)和多行注释(`/* ... */`)会被识别并以不同的颜色显示,方便阅读和理解...

    pig编程指南中的样例脚本、UDF、数据集

    在本书中,作者提供了丰富的样例脚本、用户定义函数(UDF)以及数据集,帮助读者理解并掌握Pig语言的精髓。Pig是Hadoop生态系统中的一个高级数据处理工具,其设计目标是简化大规模数据集的分析任务,通过提供一种...

    Programming Pig(pig编程).pdf

    此外,Pig还支持用户自定义函数(UDF),这使得Pig可以扩展使用Java、Python、JavaScript等其他语言编写的函数,从而执行更复杂的数据处理任务。这为Pig提供了极大的灵活性和强大的处理能力。 最后,由于Pig与...

    GA程序(适应度函数+主函数).rar_GA主程序_JUUS_ga适应度函数_pig11i_遗传算法GA

    在这个具体问题中,`pig11i`可能是作者或程序的一个标识符,而`juus`可能是作者的名字或者程序的版本。`GA适应度函数`和`遗传算法GA`标签明确了程序的核心特性,即使用遗传算法解决适应度函数定义的问题。 通过这个...

    pig-0.16.0.tar安装包

    - **UDFs(User Defined Functions)**: 用户可以根据需要编写自定义函数(UDFs),以扩展Pig的功能,处理特定的数据转换或分析任务。 - **Performance优化**: Pig支持多种性能优化策略,如使用`ORDER BY`和`GROUP ...

    pig-0.15.0

    这个版本可能包括了新的函数、操作符和优化器,使得数据转换和分析更加强大和灵活。 描述中的“pig-0.15.0.tar.gz”提及的是软件的归档文件,通常包含所有必要的源代码、文档、配置文件等,供用户下载、编译和安装...

Global site tag (gtag.js) - Google Analytics