中文在线免费看视频_国产成人精品亚洲日本在线观看_亚洲精品第一综合99久久_国产亚洲精品日韩综合网

當(dāng)前位置: 首頁(yè) / 技術(shù)干貨 / 正文
Hive的UDF函數(shù)

2023-02-09

   函數(shù) hive

  在Hive中,系統(tǒng)內(nèi)置了很多的函數(shù),能夠處理很多場(chǎng)景的需求。但是即便提供的函數(shù)再豐富,依然不能滿足我們所有的需求,有時(shí)候?qū)τ谝恍┍容^復(fù)雜的需求,我們就可以自定義函數(shù),來(lái)實(shí)現(xiàn)自己想要的效果。這就是所謂的UDF函數(shù)。

  UDF:User Defined Function。用戶自定義函數(shù),接收一行數(shù)據(jù),返回一行的結(jié)果。而且這也是在Hive開(kāi)發(fā)的時(shí)候,最常用的函數(shù)之一。

  1使用IDEA,創(chuàng)建Maven項(xiàng)目,并添加pom依賴:

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

  2設(shè)計(jì)類,繼承GenericUDF類,實(shí)現(xiàn)這個(gè)類中的抽象方法:

  public class ReverseCaseUDF extends GenericUDF {

  /**

  * 執(zhí)行我們自己的業(yè)務(wù)邏輯之前的校驗(yàn),常用于校驗(yàn)參數(shù)的數(shù)量、類型是否符合自己的需求

  */

  @Override

  public ObjectInspector initialize(ObjectInspector[] objectInspectors) throws UDFArgumentException {

  return null;

  }

  /**

  * 自己需要執(zhí)行的邏輯操作

  */

  @Override

  public Object evaluate(DeferredObject[] deferredObjects) throws HiveException {

  return null;

  }

  @Override

  public String getDisplayString(String[] strings) {

  return null;

  }

  }

  案例:自己實(shí)現(xiàn)concat_ws函數(shù)

  1設(shè)計(jì)自己的UDF類

  public class StringJoinUDF extends GenericUDF {

  @Override

  public ObjectInspector initialize(ObjectInspector[] objectInspectors) throws UDFArgumentException {

  // 參數(shù)數(shù)量檢查

  if (objectInspectors.length < 3) {

  throw new UDFArgumentException("參數(shù)數(shù)量不正確!至少需要一個(gè)分隔符,兩個(gè)需要拼接的字符串");

  }

  return PrimitiveObjectInspectorFactory.javaStringObjectInspector;

  }

  @Override

  public Object evaluate(DeferredObject[] deferredObjects) throws HiveException {

  // 1. 獲取到分隔符

  String separator = deferredObjects[0].get().toString();

  // 2. 定義一個(gè)StringBuilder的字符串,用來(lái)拼接最后的結(jié)果

  StringBuilder result = new StringBuilder();

  // 3. 遍歷數(shù)組中的每一個(gè)參數(shù),從1開(kāi)始

  for (int i = 1; i < deferredObjects.length - 1; i++) {

  result.append(deferredObjects[i].get().toString()).append(separator);

  }

  result.append(deferredObjects[deferredObjects.length - 1].get().toString());

  return result.toString();

  }

  @Override

  public String getDisplayString(String[] strings) {

  return null;

  }

  }

  2將項(xiàng)目打包,jar包上傳到Linux服務(wù)器,并保存到任意路徑上。

  3創(chuàng)建自定義函數(shù)

# 1. 添加jar包到classpath
add jar ~/udf_1.0.jar

# 2. 創(chuàng)建臨時(shí)函數(shù)
create temporary function my_concat_ws as 'com.qf.hive.udf.FirstUDF';

# 3. 使用測(cè)試
select my_concat_ws(', ', 'Java', 'MySQL', 'Hive');

  配置文件加載

  自定義函數(shù)已經(jīng)實(shí)現(xiàn)了,但是無(wú)論是 add jar ,還是創(chuàng)建的臨時(shí)函數(shù),都是只針對(duì)當(dāng)前的會(huì)話生效的。當(dāng)我們重啟hive客戶端的時(shí)候,就無(wú)法再使用了,需要重新加載、配置一次。這樣做太麻煩了,有沒(méi)有一種方式,可以實(shí)現(xiàn)自動(dòng)的加載呢?

  我們可以通過(guò)將上述的操作寫入到配置文件中的形式來(lái)完成。在 $HIVE_HOME/conf 的目錄下,創(chuàng)建一個(gè)文件 .hiverc,這個(gè)文件會(huì)在hive客戶端啟動(dòng)的時(shí)候,自動(dòng)的加載。因此我們就可以將上述的 add jar 和 創(chuàng)建臨時(shí)函數(shù)的操作寫入到這個(gè)文件中即可。

  因此,我們就必須要規(guī)劃好一個(gè)jar包保存的位置。這個(gè)位置可以是Linux本地的路徑,也可以是HDFS的路徑。

  ●Linux本地路徑,推薦存放在 $HIVE_HOME/lib 的目錄下。

  ●HDFS的路徑,可以創(chuàng)建自己的路徑,然后將jar包保存起來(lái)即可。

好程序員公眾號(hào)

  • · 剖析行業(yè)發(fā)展趨勢(shì)
  • · 匯聚企業(yè)項(xiàng)目源碼

好程序員開(kāi)班動(dòng)態(tài)

More+
IT培訓(xùn)IT培訓(xùn)
在線咨詢
IT培訓(xùn)IT培訓(xùn)
試聽(tīng)
IT培訓(xùn)IT培訓(xùn)
入學(xué)教程
IT培訓(xùn)IT培訓(xùn)
立即報(bào)名
IT培訓(xùn)

Copyright 2011-2023 北京千鋒互聯(lián)科技有限公司 .All Right 京ICP備12003911號(hào)-5 京公網(wǎng)安備 11010802035720號(hào)

中文在线免费看视频_国产成人精品亚洲日本在线观看_亚洲精品第一综合99久久_国产亚洲精品日韩综合网

            欧美在线一区二区三区| 亚洲福利视频一区二区| 中文字幕制服丝袜一区二区三区 | 一区二区三区在线观看国产| 一区二区三区四区乱视频| 亚洲午夜日本在线观看| 日韩成人精品在线| 国产九色sp调教91| 色综合咪咪久久| 欧美一区二区精品在线| 国产日韩视频一区二区三区| 亚洲卡通欧美制服中文| 免费久久精品视频| eeuss鲁片一区二区三区 | 日韩一区精品字幕| 国产乱人伦偷精品视频免下载| 9久草视频在线视频精品| 欧美日韩国产经典色站一区二区三区| 精品免费国产二区三区 | 欧美视频完全免费看| 欧美成人精品高清在线播放| 国产精品美女久久久久久| 亚洲成人在线网站| 国产福利一区二区| 欧美视频在线一区二区三区| wwwwxxxxx欧美| 亚洲伊人色欲综合网| 精品一区二区三区免费毛片爱| 99r国产精品| 欧美白人最猛性xxxxx69交| 亚洲免费观看在线观看| 韩日精品视频一区| 在线免费av一区| 国产亚洲精品久| 日韩精品免费专区| 91小视频免费看| 久久这里只有精品视频网| 一区2区3区在线看| 国产91丝袜在线18| 欧美电影免费观看高清完整版在线 | 国产人伦精品一区二区| 日韩高清一区二区| 色综合久久综合网97色综合| 久久午夜老司机| 污片在线观看一区二区| 一本一道波多野结衣一区二区| 精品乱码亚洲一区二区不卡| 亚洲成a人v欧美综合天堂| 99精品黄色片免费大全| 久久免费美女视频| 青草av.久久免费一区| 欧美最猛黑人xxxxx猛交| 中文子幕无线码一区tr| 精品一区免费av| 678五月天丁香亚洲综合网| 亚洲欧美日韩电影| 成人av在线电影| 国产拍揄自揄精品视频麻豆| 久久精品噜噜噜成人av农村| 欧美久久久影院| 伊人色综合久久天天人手人婷| 成人黄色网址在线观看| 久久综合成人精品亚洲另类欧美 | 欧美不卡一二三| 亚洲成av人影院| 欧美图片一区二区三区| 国产精品久久久久久久久果冻传媒| 国产一区二区三区美女| 精品国产亚洲在线| 激情图区综合网| 精品剧情v国产在线观看在线| 日韩和欧美一区二区| 欧美男人的天堂一二区| 亚洲1区2区3区4区| 欧美日韩国产在线观看| 亚洲成人动漫一区| 欧美日韩不卡一区| 亚洲v日本v欧美v久久精品| 欧美亚洲高清一区| 香蕉影视欧美成人| 911精品国产一区二区在线| 天天影视色香欲综合网老头| 欧美日韩免费观看一区二区三区| 亚洲图片一区二区| 欧美老人xxxx18| 奇米精品一区二区三区在线观看| 欧美蜜桃一区二区三区| 日本中文字幕不卡| 日韩精品一区二| 国产精品 欧美精品| 欧美国产成人精品| 色综合一个色综合亚洲| 亚洲电影一区二区| 日韩一卡二卡三卡| 国产伦精品一区二区三区视频青涩| 国产午夜精品一区二区| av不卡一区二区三区| 亚洲一区二区三区自拍| 欧美一区欧美二区| 国产精品18久久久久久久网站| 国产精品欧美极品| 色婷婷久久99综合精品jk白丝| 亚洲高清免费在线| 日韩欧美国产1| 懂色av噜噜一区二区三区av| 亚洲黄色av一区| 51精品视频一区二区三区| 狠狠色丁香婷婷综合久久片| 中文字幕精品三区| 欧美亚洲图片小说| 麻豆国产精品官网| 国产精品国产三级国产三级人妇 | 亚洲欧美福利一区二区| 欧美精品99久久久**| 精品一区在线看| 亚洲乱码精品一二三四区日韩在线| 欧美日韩在线播放一区| 激情国产一区二区| 亚洲你懂的在线视频| 日韩亚洲欧美中文三级| 成人白浆超碰人人人人| 亚洲mv大片欧洲mv大片精品| 久久久亚洲精华液精华液精华液| 99久久99久久免费精品蜜臀| 日本女人一区二区三区| 国产精品丝袜在线| 欧美一区二区在线不卡| 成人的网站免费观看| 日本欧美久久久久免费播放网| 亚洲国产精品成人综合| 欧美美女网站色| 不卡av电影在线播放| 欧美aaaaa成人免费观看视频| 国产精品第四页| 日韩欧美www| 精品999久久久| 91黄色小视频| 高清不卡在线观看| 日韩影院在线观看| 亚洲蜜桃精久久久久久久| 亚洲精品一区二区三区99| 欧美最猛黑人xxxxx猛交| 高清在线观看日韩| 久久99久久精品欧美| 亚洲成a人v欧美综合天堂下载| 中文字幕二三区不卡| 日韩欧美中文字幕制服| 欧美亚洲另类激情小说| 粉嫩aⅴ一区二区三区四区| 老司机免费视频一区二区| 一区二区三区不卡在线观看 | 国产精品资源站在线| 视频一区视频二区中文| 亚洲视频在线一区| 欧美韩日一区二区三区四区| 日韩美一区二区三区| 欧美日韩一区高清| 色久优优欧美色久优优| www.欧美日韩| 成人综合激情网| 国产成人在线电影| 极品少妇xxxx精品少妇偷拍| 视频一区在线视频| 亚洲午夜激情av| 亚洲男人电影天堂| 国产精品久久久久影视| 久久久九九九九| 久久影视一区二区| 日韩欧美一区在线观看| 777色狠狠一区二区三区| 在线亚洲+欧美+日本专区| 99精品久久免费看蜜臀剧情介绍| 国产suv精品一区二区6| 国产一级精品在线| 国产一区二区中文字幕| 另类欧美日韩国产在线| 麻豆国产欧美日韩综合精品二区 | 91精品久久久久久久99蜜桃| 欧美日韩午夜在线视频| 欧美日韩一区久久| 欧美久久婷婷综合色| 91精品国产综合久久久久久| 欧美日韩高清一区二区不卡| 欧美日韩国产另类一区| 欧美肥大bbwbbw高潮| 欧美丰满美乳xxx高潮www| 欧美高清性hdvideosex| 欧美高清视频不卡网| 91精品国产福利| 精品久久99ma| 久久噜噜亚洲综合| 日本一区二区三级电影在线观看| 欧美激情中文字幕| 18涩涩午夜精品.www| 国产精品免费观看视频| 亚洲视频资源在线| 亚洲午夜激情网页| 免费成人在线网站| 国产精品一区二区久久精品爱涩| 成人在线综合网站|