1. 程式人生 > >Hive 自定義函數

Hive 自定義函數

服務器 數據 += img clas xtend 分享圖片 定義 com

hive 支持自定義UDF,UDTF,UDAF函數

以自定義UDF為例:

使用一個名為evaluate的方法

package com.hive.custom;

import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.IntWritable;

public class XiaoUDF extends UDF {

    /**
     *  值加1000
     * @param i
     * @return val
     */
    public IntWritable evaluate(final
IntWritable i) { int val= i.get(); val+=1000; return new IntWritable(val); } }

將寫好的代碼打為jar包,上傳到服務器,或者hdfs

add jar /root/udfxiao.jar;
//add jar you.jar

技術分享圖片

註冊函數

註冊一個臨時函數

create temporary function fei  as ‘com.hive.custom.XiaoUDF‘;
//fei:註冊的函數名
//com.hive.custom.XiaoUDF 註冊函數的全類名

技術分享圖片

使用函數

select fei(id) from test;

技術分享圖片

註冊永久函數

create  function testdb.peng  as ‘com.hive.custom.XiaoUDF‘;
//testdb 註冊永久函數的數據庫

技術分享圖片

從HDFS上註冊函數

CREATE FUNCTION fei AS ‘com.hive.custom.XiaoUDF‘ USING JAR ‘hdfs:///udfxiao.jar‘;
// fei 註冊的函數名
//com.hive.custom.XiaoUDF  函數的全內名
//hdfs:///udfxiao.jar   hdfs上根目錄下的jar

技術分享圖片

刪除函數

drop temporary function if exists fei;

技術分享圖片

Hive 自定義函數