zoukankan      html  css  js  c++  java
  • Hive_UDF函数

    UDF是User defined Function的简写,意思是用户自定义方法。

    UDF开发流程

    1 eclipse开发一个java程序,导入hive的jar包

    2 开发代码

    3 将java程序打成jar包,上传到hive所在的机器上,

    注意开发代码的环境和运行环境的jdk版本要一致,不然会报错Unsupported major.minor version 52.0

    4 在hive的命令行中输入以下命令,将程序jar包添加到hive运行时的classpath中

    5 在hive中创建一个函数名,映射到自己开发的java类:

    6 接下来就可以使用自定义的函数了
     
    下面是一个Demo:
     
    有如下原始数据:

    1,zhangsan:18:beijing|male|it,2000

    2,lisi:28:beijing|female|finance,4000

    3,wangwu:38:shanghai|male|project,20000

     

    1先建表:

    create table t_user(id int,user_info string,salary int)
    row format delimited
    fields terminated by ',';

     

    2导数:

    load data local inpath "/home/test.txt" into table t_user;

    3上表不方便做细粒度的分析挖掘,需要将user_info字段拆解成多个字段,用hive自带的函数不方便,

    通过自定义一个函数来实现拆解功能。

     

    public class UserInfoParser extends UDF {
        public String evaluate(String field, int index) {
            String replaceAll = field.replaceAll("\|", ":"); --将|替换为:
            String[] split = replaceAll.split(":");  --字符串切割
            return split[index-1];
        }
    }

     

    4将java程序打成jar包,上传到hive所在的机器上

     

    5在hive的命令行中输入以下命令,将程序jar包添加到hive运行时的classpath中:

    hive> add jar /home/badou/Documents/parseinfo.jar;

     

    6在hive中创建一个函数名,映射到自己开发的java类:

    hive> create temporary function parseinfo as 'hive_udf.UserInfoParse';

     

    7接下来就可以使用自定义的函数uinfo_parse了

    用函数拆解原来的字段,然后将结果保存到一张明细表中:

    create table t_user_info
    as
    select
    id,
    parseinfo(user_info,1) as uname,
    parseinfo(user_info,2) as age,
    parseinfo(user_info,3) as addr,
    parseinfo(user_info,4) as sexual,
    parseinfo(user_info,5) as hangye,
    salary
    from
    t_user;

     

     8 查询解析结果

     

  • 相关阅读:
    随机抽样一致性算法(RANSAC)
    RANSAC算法详解
    添加“返回顶部”小图标按钮的JS(JavaScript)代码详解
    vue-cli3组件嵌套
    vue-cli3文件的引入
    vue-cli3组件的使用
    vue ui 使用图形化界面
    vue-cli3及以上版本安装及创建项目
    NetTerm共享文件
    Gin框架配置静态文件static
  • 原文地址:https://www.cnblogs.com/lucas-zhao/p/11908273.html
Copyright © 2011-2022 走看看