日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

hive 解密_hive 中自定义 base64 加密 解密 UDF 函数

發布時間:2025/3/20 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hive 解密_hive 中自定义 base64 加密 解密 UDF 函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、maven依賴

org.apache.hadoop

hadoop-client

2.7.3

org.apache.hive

hive-exec

1.2.1

org.apache.maven.plugins

maven-shade-plugin

1.4

package

shade

*:*

META-INF/*.SF

META-INF/*.DSA

META-INF/*.RSA

META-INF/spring.handlers

com.neu.hive.UDF.ToUpperCaseUDF

META-INF/spring.schemas

二、base64 解密代碼

public class Decode extends UDF {

private static final Logger log = Logger.getLogger(Decode.class);

private static final String charset = "utf-8";

public String evaluate(String param){

if (param == null) {

return null;

}

byte[] bytes = Base64.decodeBase64(param);

try {

String res = new String(bytes,charset);

return res;

} catch (UnsupportedEncodingException e) {

log.error(String.format("字符串:{}解密失敗",param),e);

}

return null;

}

三、base64加密代碼

public class Encode extends UDF {

private static final Logger log = Logger.getLogger(Encode.class);

private static final String charset = "utf-8";

public String evaluate(String param){

if (param == null){

return null;

}

try {

return new String(Base64.encodeBase64(param.getBytes(charset)), charset);

} catch (UnsupportedEncodingException e) {

log.error(String.format("字符串:%s加密異常",param),e);

}

return null;

}

注:如上代碼所示:

1、自定義hive 的UDF函數需要繼承UDF

2、自定義方法需要實現evaluate方法,否則不能生效,evaluate方法可以重載

四、打包編譯上傳服務器任意目錄,如下圖所示

五、進入hive操作界面

六、將上傳的jar添加至hive的classpath中,如下指令

指令:add jar /opt/hive/udf/encode-and-decode.jar;

注意:后面的路徑是我放打好的udf? 的jar包的路徑;

七、查看jar包是否存在

指令:list jar;

如圖:

八、創建我們的udf函數

指令:create temporary function encode as 'com.zdww.dsj.udf.Encode';

注:以上指令是:create temporary function + 自定義UDF函數名稱 + as + 編寫這個Encode類的路徑

上面截圖所示類的路徑;

九、查看是否存在我們自定義UDF函數

指令:show functions;

十、使用自定義UDF函數

例如:

select encode(name) from dw.mps_event;

注:encode() 中encode是我們自定義函數名稱,()里面傳入我們需要加密或者解密的參數

結果如圖:

刪除臨時UDF函數指令:

drop temporary function encode;

注:encode 是UDF函數名稱;

十一、特別注意:

以上創建的UDF函數只是臨時的UDF函數,只會存在于此時所開的黑窗口界面使用,如果令開一個hive操作界面,我們定義的UDF函數就不能使用了;所以如下 給出創建全局UDF函數

十二、創建全局(永久)UDF函數

1、在hdfs上創建一個/lib目錄

指令:hadoop fs -mkdir /lib

2、將我們之前存放在服務器中的jar上傳到我們創建的lib目錄下

指令:hadoop fs -put /opt/hive/udf/encode-and-decode.jar /lib

如圖:

3、hive操作界面創建永久函數

指令:

create function test_encode as 'com.zdww.dsj.udf.Encode' using jar 'hdfs://zdww-dsj/lib/encode-and-decode.jar';

注:create function + 自定義函數名稱 + as +?編寫這個Encode類的路徑 + using jar + hdfs上的jar所在路徑;

4、如上全局的UDF函數即創建好

注:可以在hive的元數據庫中查看FUNCS表,會有自定義全局UDF函數的信息;

5、刪除UDF:

指令:drop function?test_encode;

總結

以上是生活随笔為你收集整理的hive 解密_hive 中自定义 base64 加密 解密 UDF 函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。