1.udf函数可以直接应用于select语句,对查询结构做格式化处理后,再输出内容
2.编写udf函数的时候需要注意以下几点
(1)自定义udf需要继承org.apache.hadoop.hive.ql.exec.UDF
(2)需要evaluate函数
3.步骤
(1)把程序打包放到目标机器上去
(2)进入hive客服端,添加jar包:add jar /usr/local/testdata/hive/hive_UP.jar
(3)创建临时函数:hive>create temporary function f_up as ‘hive_demo.hive_udf’
f_up --》函数名 ‘hive_demo.hive_udf’ --》函数主类名
4.查询sql语句
select f_up(line) from wc_test;
销毁临时函数:hive>drop temporary function f_up;
注意:UDF只能实现一进一出的操作,如果需要实现多进一出,则需要实现UDAF
pom.xml依赖
org.apache.hive
hive-exec
1.2.1
public class hive_udf extends UDF{
public String evaluate (String word){
String upperCase = word.toUpperCase();
return upperCase;
}
}
5.hive的jdbc连接
(1)首先开启metastore
hive --service metastore &
(2)先开启hiveservice2
hive --service hiveserver2 &
添加maven依赖
org.apache.hive
hive-jdbc
1.2.1
其次在eclipse中编写代码,java中的jdbc
package 包名;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class 类名{
public static void main(){
Class.forName(“org.apache.hive.jdbc.HiveDriver”);
Connection con = DriverManager.getConnection(“jdbc:hive2://192.168.8.10:10000/数据库名”);
Statement cs = con.createStatement();
//查询sql,query
ResultSet rs = cs.executeQuery(“select * from 数据库名.表名”);
//通常用于DDL操作
//cs.exectte(“create table test”);
while(rs.next()){
String word = rs.getString(1);
String count = rs.getString(2);
System.out.println(word + “,” + count);
}
rs.close();
cs.close();
con.close();
}
}
6.定时功能-- hive -e 写在shell脚本里
hive -e “select * from shujuku.tablename limit 5”
可以直接在没有启动hive的集群下执行执行sql语句
可以写一个shell脚本: //shell脚本什么都可以写
cd /opt
vi test.sh -->
内容如下
#!/bin/bash
hive -e “select * from shujuku.tablename limit 5”
保存,退出
启动脚本:
sh test.sh
// #!/bin/bash 这里面还可以写语法
#!/bin/bash
date_time=$(date ‘+%Y%m%d’)
echo
d
a
t
e
t
i
m
e
h
i
v
e
−
e
"
s
e
l
e
c
t
∗
f
r
o
m
s
h
u
j
u
k
u
.
t
a
b
l
e
n
a
m
e
w
h
e
r
e
p
t
=
date_time hive -e "select * from shujuku.tablename where pt=
datetimehive−e"select∗fromshujuku.tablenamewherept=date_time limit 5"
保存,退出
启动脚本:
sh test.sh
7.定时功能-- hive -f 写在shell脚本里
hive -f /opt/test.hql
hive -f 的shell脚本如下:
cd /opt
vi test.hql -->
内容如下
//直接写sql
select * from shujuku.tablename limit 5
启动脚本:
hive -f test.hql