Hive学习笔记(五) JDBC, UDF编程


UDF编程

UDF:用户定义函数

  1. 创建Maven项目或模块,配置pom.xml引入jar包
  2. 编写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);
     }
    }
  3. 将该函数打包。



  4. 上传至虚拟机,然后从hive的cli中添加jar包



    hive> add jar /opt/datas/AddStringUdf.jar



  5. 创建临时函数

    hive> create temporary function addstring as 'com.fuful.udf.AddStringUdf';
  6. 可以使用新建函数了

    hive > select addstring(ename) from db_hive.emp;

JDBC

  1. 配置pom.xml,导入jar包
  2. 编写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();
     }
    }

声明:奋斗小刘|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - Hive学习笔记(五) JDBC, UDF编程


Make Everyday Count