hive-Java-连接Apl-UDF函数

本文介绍了如何在Hadoop环境中启动服务、关闭安全模式,使用Hive创建表并导入数据,同时详细说明了如何在ApacheMaven环境下配置、打包Java类为UDF,以及如何在Hive中使用这些自定义函数的操作过程。
摘要由CSDN通过智能技术生成

========================================
1、启动服务
start-all.sh
2、关闭安全模式
hadoop dfsadmin -safemode leave
3、
hive --service hiveserver2 &
========================================
create table tmp(
movieid int,
title string,
genres array<string>
)
row format delimited
fields terminated by ',';

load data local inpath '/root/user.csv' overwrite into table tmp;

1、解压apache-maven-3.6.1到A里
2、在文件apache-maven-3.6.1里创建localRepository,将c0cd3630-8531-11ee-88a5-53ea2a688f3a文件解压到localRepository中
3、设置\apache-maven-3.6.1\conf路径下的settings.xml文件,<localRepository>添加localRepository的路径</localRepository>
4、设置!!!File | Settings | Build, Execution, Deployment | Build Tools | Maven
5、配置Maven环境变量

5、创建名为Lower的java class
6、转小写
package com.hive;              //使用Alt+enter创建目录
import org.apache.commons.lang.StringUtils;
import org.apache.hadoop.hive.ql.exec.UDF;

public class Lower extends UDF {
    /**
     * 如果入参是合法字符串,就转为小写返回
     * @param str
     * @return
     */
    public String evaluate(String str) {
        return StringUtils.isBlank(str) ? str : str.toLowerCase();
    }
}
7、转大写
package com.hiveudf.udf;             //使用Alt+enter创建目录
import org.apache.commons.lang.StringUtils;
import org.apache.hadoop.hive.ql.exec.UDF;

public class Upper extends UDF {

    /**
     * 如果入参是合法字符串,就转为大写返回
     * @param str
     * @return
     */
    public String evaluate(String str) {
        return StringUtils.isBlank(str) ? str : str.toUpperCase();
    }
}

8、打包 
执行package  打成jar包上传到服务器/root

9、jar包用法
将jar包添加到hive的classpath
1、add jar /root/MAVEB_JAVA-1.0-SNAPSHOT.jar;

2、list jars;

创建临时函数与开发好的java class关联
3、create temporary function myUpper as "com.hiveudf.udf.Upper";  //com.hiveudf包名 Upper类名

使用自定义的函数myUpper 
select name, myUpper(name) from tmp;

****************************************************************************
反向操作
在idea中应用jar包  得到包名和类名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值