Hive学习之五 《Hive进阶—UDF操作案例》 详解

hive—UDF操作

udf的操作过程:

在HIVE会话中add 自定义函数的jar文件,然后创建function,继而使用函数。

下面就以下面课题为例:

课题:统计每个活动的PV和UV

一、Java通过正则表达式,截取标题名称。

以链接,截取标红的字符串。

http://cms.yhd.com/sale/vtxqCLCzfto?tc=ad.0.0.17280-32881642.1&tp=1.1.36.9.1.LEffwdz-10-35RcM&ti=ZX8H

为例。

核心代码如下,

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.hadoop.hive.ql.exec.UDF;

public class GetCommentNameOrId extends UDF {
    public String evaluate(String url,String flag){
        String str = null;
        Pattern p = Pattern.compile(flag+"/[a-zA-Z0-9]+");
        Matcher m = p.matcher(url);
        if(m.find()){
            str = m.group(0).toLowerCase().split("/")[1];
        }
        return str;
    }

    public static void main(String[] args) {
        String url = "http://cms.yhd.com/sale/vtxqCLCzfto?tc=ad.0.0.17280-32881642.1&tp=1.1.36.9.1.LEffwdz-10-35RcM&ti=ZX8H";
        GetCommentNameOrId gs = new GetCommentNameOrId();
        System.out.println(gs.evaluate(url,"sale"));
    }
}

传参:

url:http://cms.yhd.com/sale/vtxqCLCzfto?tc=ad.0.0.17280-32881642.1&tp=1.1.36.9.1.LEffwdz-10-35RcM&ti=ZX8H

flag:sale

最后得到的结果是 :vtxqCLCzfto

二、UDF操作

  1、在rptest库中创建表

create table rptest.rpt_sale_daily(
huodong string,
pv bigint,
uv bigint) partitioned by (ds string,hour string);

  2、打jar包,并上传到制定的路径

  add jar /opt/litong/lib/hiveUDF.jar

  3、指定属性类,创建function

  create temporary function GetCommentNameOrId as ‘com.litong.hive.udf.GetCommentNameOrId‘;

  4、添加数据到表rpt_sale_daily中 

insert overwrite table rptest.rpt_sale_daily partition (ds=‘2015-08-28‘,hour=‘18‘)
select GetCommentNameOrId(url,"sale") huodong,count(url) pv,count(distinct guid) uv from default.track_log a
where ds=‘2015-08-28‘ and hour=‘18‘
group by ds,GetCommentNameOrId(url,"sale");

insert overwrite table rptest.rpt_sale_daily partition (ds=‘2015-08-28‘,hour=‘19‘)
select GetCommentNameOrId(url,"sale") huodong,count(url) pv,count(distinct guid) uv from default.track_log a
where ds=‘2015-08-28‘ and hour=‘19‘
group by ds,GetCommentNameOrId(u

  5、检查数据是否插入成功

  

OK,数据添加成功。

  

  

时间: 2024-09-29 09:26:38

Hive学习之五 《Hive进阶—UDF操作案例》 详解的相关文章

SQL Server 表的管理_关于表的操作增删查改的操作的详解(案例代码)

SQL Server 表的管理_关于表的操作增删查改的操作的详解(案例代码) 概述: 表由行和列组成,每个表都必须有个表名. SQL CREATE TABLE 语法 CREATE TABLE table_name ( column_name1 data_type(size), column_name2 data_type(size), column_name3 data_type(size), .... ); 1.查看表 exec sp_help table1; 2.创建表 create tab

【强化学习篇】--强化学习案例详解一

一.前述 本文通过一个案例来讲解Q-Learning 二.具体 1.案例 假设我们需要走到5房间. 转变为如下图:先构造奖励,达到5,即能够走得5的action则说明奖励比较高设置成100,没有达到5说明奖励比较低,设置成0. Q-learning实现步骤:  2.案例详解: 第一步的Q(1,5):最开始的Q矩阵都是零矩阵,迭代完之后Q(1,5)是100 第二次迭代:依旧是随机 收敛的意思是最后Q基本不变了,然后归一化操作,所有值都除以500,然后计算百分比. 则最后的分值填充如下: 原文地址:

005-Scala数组操作实战详解

005-Scala数组操作实战详解 Worksheet的使用 交互式命令执行平台 记得每次要保存才会出相应的结果 数组的基本操作 数组的下标是从0开始和Tuple不同 缓冲数组ArrayBuffer(长度可变) 数组的进阶操作 多维数组 常用数组使用方法分析 1.可通过yield产生新的数组并赋值给变量 2.for循环中也同时可以添加if过滤器来过滤数据再产生新的数据 3.c.filter(_%2==0).Map(2*_)生产环境经常会使用的表达方法(重点) 4.数组和缓冲数组都是可以直接调用其

Git大法好——2.Git本地操作指令详解

Git大法好--2.Git本地操作指令详解 引言 上节给大家讲解了有关于Git的一些概念,Git的引入,Git的四个组成部分,Git文件的状态,以及 Git的下载安装:前面也讲过Git和SVN有个明显的差别就是,Git可以不需要网络就可以进行版本 控制,这是因为Git中每个电脑都拥有一个本地的版本库,而远程的仓库仅仅是作为我们交换修改 的一个工具!即使失去这个工具,我们也可以干活,只是交换修改不方便罢了,假如是SVN,远程 服务器挂了-所以,我们使用Git的时候大部分时间都是在进行Git的一些本

Angularjs 事件指令 input 相关指令 和样式指令 DOM 操作指令详解

Angularjs 事件指令 input 相关指令 和样式指令DOM 操作指令详解学习要点:1. AngularJs 事件指令2. input 相关指令3. 样式指令4. DOM 操作指令5. ngBind/ngBindHtml/ngBindTemplate 重点6. ng-init ng-mode ng-model-options ng-controler 1. Angularjs 事件指令自己研究:ng-click/dbclickng-mousedown/upng-mouseenter/le

"MindManager"学习iOS系列之"CAAnimation-核心动画"详解,让你的应用“动”起来。

"MindManager"学习iOS系列之"CAAnimation-核心动画"详解,思维导图内展示了CAAnimation-核心动画的大多数基本功能和知识,每个part都有代码讲解,展示出CAAnimation-核心动画的清晰轮廓,编者提供了"JPG"."SWF"."PDF"."Word"."Mmap"格式的源文件供给使用.注意:JPG格式仅为图片总览,SWF格式使用

java笔记--反射进阶之总结与详解

一.反射进阶之动态设置类的私有域 "封装"是Java的三大特性之一,为了能更好保证其封装性,我们往往需要将域设置成私有的, 然后通过提供相对应的set和get方法来操作这个域.但是我们仍然可以用java的反射机制来 修改类的私有域,由于修改类的私有域会破坏Java"封装"的特性,故请慎重操作. 主要技术:     Field类提供有关类或接口的单个字段的信息,以及对它的动态访问权限.     访问的字段可能是一个类(静态)字段或实例字段.             常

安装MACOS操作步骤详解

安装MACOS操作步骤详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 关于安装MAC的操作系统其实大家都知道可以让客服帮忙提供软件上的支持,而且苹果客服都很有礼貌呢,而且非常的有耐心.特别感谢她们的帮助,让我对MAC的操作系统的好感度有了大大的提升.起初,我刚刚拿到我的本的时候是去年,因为我压根并不看好笔记本,我到现在也非常喜欢台式机,因为体验度是相当棒的,但是由于工作的原因,可能是要去出差的时候带着个台式机到处跑也不太合适,于是就决定买一个低配的笔记本.刚刚拿到笔记本第

POI操作Excel详解,HSSF和XSSF两种方式

HSSF方式: package com.tools.poi.lesson1; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.