Hive中UDF編程

UDF介紹及編程要點

Hive中自帶了許多函數(shù)碟渺,方便數(shù)據(jù)的處理分析。但是有時候沒有內(nèi)部的函數(shù)來提供想要的功能突诬,需要自定義函數(shù)(UDF)來實現(xiàn)想要的功能苫拍。

編寫UDF需要下面兩個步驟

  1. 繼承org.apache.hadoop.hive.ql.UDF
  2. 實現(xiàn)evaluate函數(shù),這個函數(shù)必須要有返回值旺隙,不能設(shè)置為void绒极。同時建議使用mapreduce編程模型中的數(shù)據(jù)類型(Text,IntWritable等),因為hive語句會被轉(zhuǎn)換為mapreduce任務(wù)催束。

針對具體問題實現(xiàn)UDF步驟

  1. 首先配置eclipse環(huán)境集峦。創(chuàng)建maven項目后,在pom.xml中添加依賴。
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <hadoop.version>2.5.0</hadoop.version>
  </properties>

  <dependencies>
    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-client</artifactId>
        <version>2.5.0</version>
    </dependency>
  
    <dependency>
        <groupId>org.apache.hive</groupId>
        <artifactId>hive-jdbc</artifactId>
        <version>0.13.1</version>
    </dependency>

    <dependency>
        <groupId>org.apache.hive</groupId>
        <artifactId>hive-exec</artifactId>
        <version>0.13.1</version>
    </dependency>
    
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  1. 針對實際問題分析需求
    需求: 去除下列數(shù)據(jù)字段中的雙引號


    hive1.png
  2. 編寫UDF代碼及本地測試
import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;
/*
 * 去除字符串中的雙引號
 */
public class signUDF extends UDF {
    public Text evaluate(Text string) {
        // 過濾
        if (null == string) {
            return null;
        }
        // 用來保存最后結(jié)果
        Text result;
        // 替換字符串的雙引號為空
        String s = string.toString().replaceAll("\"", "");
        // 用中間結(jié)果生成返回值
        result = new Text(s);
        return result;
    }
}

測試如下
輸入:"wulei" "www"
輸出:wulei www


hive2.png
  1. 打成jar包在hive中測試
  • 打成jar包上穿至Linux中


    hive3.png
  • 關(guān)聯(lián)jar包

hive (default)> add jar /opt/datas/signuUDF.jar;
Added /opt/datas/signuUDF.jar to class path
Added resource: /opt/datas/signuUDF.jar

  • 創(chuàng)建方法(退出hive shell后將失效)

hive (default)> create temporary function my_udf as "hiveUDF.hiveUDF.signUDF";
OK
Time taken: 0.039 seconds

  • 永久添加UDF的方法:配置hive-site.xml文件中的hive.aux.jars.path(輔助jar路徑)屬性塔淤,屬性值為jar包的絕對路徑
  • 驗證自定義函數(shù)

hive (test_db)> select * from test1;
OK
test1.ip test1.source
"192.168.200.5" "/wulei/in"
"192.168.200.4" "/wulei/out"
hive (test_db)> select my_udf(ip) from test1;
MapReduce Jobs Launched:
Job 0: Map: 1 Cumulative CPU: 1.7 sec HDFS Read: 276 HDFS Write: 28 SUCCESS
Total MapReduce CPU Time Spent: 1 seconds 700 msec
OK
_c0
192.168.200.5
192.168.200.4
Time taken: 41.616 seconds, Fetched: 2 row(s)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末摘昌,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子高蜂,更是在濱河造成了極大的恐慌聪黎,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件备恤,死亡現(xiàn)場離奇詭異稿饰,居然都是意外死亡,警方通過查閱死者的電腦和手機露泊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門喉镰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人惭笑,你說我怎么就攤上這事侣姆。” “怎么了沉噩?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵捺宗,是天一觀的道長。 經(jīng)常有香客問我川蒙,道長蚜厉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任畜眨,我火速辦了婚禮昼牛,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘胶果。我一直安慰自己匾嘱,他們只是感情好,可當我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布早抠。 她就那樣靜靜地躺著霎烙,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蕊连。 梳的紋絲不亂的頭發(fā)上悬垃,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天,我揣著相機與錄音甘苍,去河邊找鬼尝蠕。 笑死,一個胖子當著我的面吹牛载庭,可吹牛的內(nèi)容都是我干的看彼。 我是一名探鬼主播廊佩,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼靖榕!你這毒婦竟也來了标锄?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤茁计,失蹤者是張志新(化名)和其女友劉穎料皇,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體星压,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡践剂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了娜膘。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片逊脯。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖竣贪,靈堂內(nèi)的尸體忽然破棺而出男窟,到底是詐尸還是另有隱情,我是刑警寧澤贾富,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站牺六,受9級特大地震影響颤枪,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜淑际,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一畏纲、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧春缕,春花似錦盗胀、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至宅荤,卻和暖如春屑迂,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背冯键。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工惹盼, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人惫确。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓手报,卻偏偏與公主長得像蚯舱,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子掩蛤,可洞房花燭夜當晚...
    茶點故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容