1. 程式人生 > >Hive udf函式的使用

Hive udf函式的使用

1 、編寫UDF類

以簡單的處理單個欄位的UDF函式為例,開發自定義UDF函式需要繼承’org.apache.hadoop.hive.ql.exec.UDF’類. 
可以通過Maven新增,pom檔案中加入(版本號跟Hive版本一致即可):

<dependency>
  <groupId>org.apache.hive</groupId>
  <artifactId>hive-exec</artifactId>
  <version>0.13.1</version>
</dependency>

最簡單的實現只需繼承UDF類,並實現evaluate函式.如下UDF函式用來將IP(v4)地址轉換為整數.

    package com.liam8.hive;

    import org.apache.hadoop.hive.ql.exec.Description;
    import org.apache.hadoop.hive.ql.exec.UDF;

    /**
    * Convert IPv4 to a num which type is Long in java.
    * Created by Liam on 2016/4/11.
    */
    @Description(name = "IpToNum", value = "_FUNC_(ip) - Convert IPv4 to a num(long)."
) public class IpToNum extends UDF { public long evaluate(String ip) { String[] nums = ip.split("\\."); return Long.parseLong(nums[3]) + Long.parseLong(nums[2]) * 256 + Long.parseLong(nums[1]) * 65536 + Long.parseLong(nums[0]) * 16777216; } }

evaluate方法的輸入輸出即是UDF函式的輸入輸出. 
Description註解部分提供函式的幫助資訊. 
執行:desc function test.iptonum 
輸出: 
test.iptonum(ip) - Convert IPv4 to a num(long).

2 、部署及建立UDF函式

PS:Hive0.13及以後版本適用

部署jar包

將jar包複製到HDFS.

hdfs -dfs -put udfs-0.1.jar 'hdfs:///user/hadoop/hiveUDF'

建立永久函式

需在Hive中執行sql語句,格式如下:

CREATE FUNCTION [db_name.]function_name AS class_name
[USING JAR|FILE|ARCHIVE 'file_uri' [, JAR|FILE|ARCHIVE 'file_uri'] ];

如:

create function test.iptonum as 'com.liam8.hive.IpToNum' using jar 'hdfs:///user/hadoop/hiveUDF/udfs-0.1.jar'

函式需要屬於某個庫,如這裡是’test’,當其他庫呼叫時,需要加上庫名,如’test.iptonum’.

呼叫方式: select test.iptonum('127.0.0.1');

建立臨時函式

臨時函式只在當前session中有效,臨時函式不能指定庫.

create temporary function iptonum as 'com.liam8.hive.IpToNum' using jar 'hdfs:///user/hadoop/hiveUDF/udfs-0.1.jar'

呼叫方式: select iptonum('127.0.0.1');


相關推薦

Hive UDF函式編寫流程詳解

參考官網: https://cwiki.apache.org/confluence/display/Hive/HivePlugins     新增hive UDF函式 https://cwiki.apache.org/confluence/displ

自定義HIVE-UDF函式

一 新建JAVA專案 並新增 hive-exec-2.1.0.jar 和hadoop-common-2.7.3.jar hive-exec-2.1.0.jar 在HIVE安裝目錄的lib目錄下 hadoop-common-2.7.3.jar在hadoop

base64加密解密的hive udf函式

依賴hadoop,hive相關包, 原始碼見附件。 add jar hdfs://nn.dc.sh-wgq/group/p_sdo_data/p_sdo_data_etl/udf/base64.jar; CREATE TEMPORARY FUNCTION en

Hive udf函式的使用

1 、編寫UDF類以簡單的處理單個欄位的UDF函式為例,開發自定義UDF函式需要繼承’org.apache.hadoop.hive.ql.exec.UDF’類. 可以通過Maven新增,pom檔案中加入(版本號跟Hive版本一致即可):<dependency>

hive udf函式替換特殊字元

import org.apache.hadoop.hive.ql.exec.UDF; public class Rep_Ascii extends UDF { private String str = null; public String evaluate(S

IDEA建立Hive中的UDF函式,白話文講解

1.UDF函式建立步驟 1.要編寫一個java類繼承UDF這個類。 2.重寫evaluate()方法。 3.使用maven打包。 1.打包步驟 2.點選install 在點選clean 再點選package完成打包。 4、將jar包上傳並新增到hive hive (default)

Hive面試題:請寫出你在工作中自定義過的udf函式,簡述定義步驟

步驟: 1.extends UDF,實現evaluate() 2.add JAR /home/hadoop/hivejar/udf.jar; 3.create temporary function tolowercase as 'com.ghgj.hive.udf.ToLowerCa

Hive面試題:hive有哪些udf函式,作用

UDF(user-defined function)作用於單個數據行,產生一個數據行作為輸出。(數學函式,字串函式) UDAF(使用者定義聚集函式 User- Defined Aggregation Funcation):接收多個輸入資料行,併產生一個輸出資料行。(count,max)

自己寫UDF函式匯入hive對查詢結果進行格式化顯示(Java)

本篇UDF函式使用IntelliJ IDEA進行編寫和打包,使用的是Java語言,資料使用上一篇部落格“HDFS、Hive(Impala)讀取本地檔案到HDFS,再使用Hive(Impala)從HDFS讀取檔案進行建表”中已經放入hive中的資料進行查詢展示。 建立一個ma

Hive UDF臨時與永久函式註冊函式

wechat:812716131 ------------------------------------------------------ 技術交流群請聯絡上面wechat ----------------------------------------------

HIve 註冊UDF函式

wechat:812716131 ------------------------------------------------------ 技術交流群請聯絡上面wechat ----------------------------------------------

hive----自定義UDF 函式-----時間格式化以及取出雙引號的程式碼

一.UDF的描述 使用者自定義函式(UDF)是一個允許使用者擴充套件HiveQL的強大的功能。使用者可以使用Java編寫自己的UDF,一旦將使用者自定義函式加入到使用者會話中(互動式的或者通過指令碼執行的),它們就將和內建的函式一樣使用,甚至可以提供聯機幫助。

hive 自定義udf函式

上一篇中介紹到了一些hive 中一些預設的function 但是在日常的開發需求中這個肯定是滿足不了我們的,下面介紹一下hive 的自定義function 廢話不多少了先寫個簡單的例子壓壓驚 首先給出工程依賴 <dependencies> <depen

HIVE的分割槽、hive關聯Hbase、UDF函式

Hive and HDFS 原始資料 //建立hive和Hdfs的外部關聯表 CREATE EXTERNAL TABLE people(id int,s

hive 使用udf函式實現資料匯入到mysql

利用hive內建的hive-contrib 來實現udf匯入mysql,同時還需要mysql驅動包 例子: add jar /usr/local/hive-0.13.1b/hive-contri

hive之Python UDF函式操作map資料 詳解 全是乾貨

#1、Hive基本操作: 檢視dw.full_h_usr_base_user的詳細資訊,可以獲取資料檔案的存放路徑 desc formatted dw.full_h_usr_base_user

Hive自定義UDF函式--常用的工具類

註冊函式:將自定義函式打成jar包,上傳hdfs$hive>create function formattime as 'com.air.udf.FormatTimeUDF' using jar 'hdfs://mycluster/user/centos/air-hiv

Hive 內建函式UDF函式

1)內建函式    hive> show functions;    // 顯示所有函式,比官網詳細    hive> desc function substr;    // 檢視函式的詳細資訊    hive> desc function extended

hive自定義UDF函式

一、自定義函式流程 要想在Hive中完成自定義函式的操作,要按照如下的流程進行操作: 定義Java類並實現org.apache.hadoop.hive.ql.exec.UDF——>覆寫evaluate——>將Java工程上傳到Hive所在伺服器(我這裡是Cen

Hive日期函式總結

--1.時間戳函式 --日期轉時間戳:從1970-01-01 00:00:00 UTC到指定時間的秒數 select unix_timestamp(); --獲得當前時區的UNIX時間戳 select unix_timestamp('2017-09-15 14:23:00');  sele