UDF编程
UDF:用户定义函数
- 创建Maven项目或模块,配置pom.xml引入jar包
编写UDF函数:
该函数作用为:为名为str的列的每一个值相加,得到一个长字符串。package com.fuful.udf; import org.apache.hadoop.hive.ql.exec.UDF; import org.apache.hadoop.io.Text; public class AddStringUdf extends UDF { public Text evaluate(Text str){ String[] arr = str.toString().split(","); String data = ""; for (String tmp: arr) { data = data + tmp; } return new Text(data); } }
- 将该函数打包。
上传至虚拟机,然后从hive的cli中添加jar包
hive> add jar /opt/datas/AddStringUdf.jar
创建临时函数
hive> create temporary function addstring as 'com.fuful.udf.AddStringUdf';
可以使用新建函数了
hive > select addstring(ename) from db_hive.emp;
JDBC
- 配置pom.xml,导入jar包
编写jdbc类和方法即可。
package com.fuful; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; /** * Hello world! * */ public class App { public static void main( String[] args ) throws Exception { Class.forName("org.apache.hive.jdbc.HiveDriver"); Connection conn = DriverManager.getConnection("jdbc:hive2://10.211.55.10:10000/db_hive","skadmin","qaz123"); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("select * from emp"); while (rs.next()){ System.out.println(rs.getString("ename")); } rs.close(); stmt.close(); conn.close(); } }
Comments | 374条评论