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函數(shù)需要繼承UDF
2、自定義方法需要實(shí)現(xiàn)evaluate方法,否則不能生效,evaluate方法可以重載
四、打包編譯上傳服務(wù)器任意目錄,如下圖所示
五、進(jìn)入hive操作界面
六、將上傳的jar添加至hive的classpath中,如下指令
指令:add jar /opt/hive/udf/encode-and-decode.jar;
注意:后面的路徑是我放打好的udf? 的jar包的路徑;
七、查看jar包是否存在
指令:list jar;
如圖:
八、創(chuàng)建我們的udf函數(shù)
指令:create temporary function encode as 'com.zdww.dsj.udf.Encode';
注:以上指令是:create temporary function + 自定義UDF函數(shù)名稱 + as + 編寫這個(gè)Encode類的路徑
上面截圖所示類的路徑;
九、查看是否存在我們自定義UDF函數(shù)
指令:show functions;
十、使用自定義UDF函數(shù)
例如:
select encode(name) from dw.mps_event;
注:encode() 中encode是我們自定義函數(shù)名稱,()里面?zhèn)魅胛覀冃枰用芑蛘呓饷艿膮?shù)
結(jié)果如圖:
刪除臨時(shí)UDF函數(shù)指令:
drop temporary function encode;
注:encode 是UDF函數(shù)名稱;
十一、特別注意:
以上創(chuàng)建的UDF函數(shù)只是臨時(shí)的UDF函數(shù),只會(huì)存在于此時(shí)所開的黑窗口界面使用,如果令開一個(gè)hive操作界面,我們定義的UDF函數(shù)就不能使用了;所以如下 給出創(chuàng)建全局UDF函數(shù)
十二、創(chuàng)建全局(永久)UDF函數(shù)
1、在hdfs上創(chuàng)建一個(gè)/lib目錄
指令:hadoop fs -mkdir /lib
2、將我們之前存放在服務(wù)器中的jar上傳到我們創(chuàng)建的lib目錄下
指令:hadoop fs -put /opt/hive/udf/encode-and-decode.jar /lib
如圖:
3、hive操作界面創(chuàng)建永久函數(shù)
指令:
create function test_encode as 'com.zdww.dsj.udf.Encode' using jar 'hdfs://zdww-dsj/lib/encode-and-decode.jar';
注:create function + 自定義函數(shù)名稱 + as +?編寫這個(gè)Encode類的路徑 + using jar + hdfs上的jar所在路徑;
4、如上全局的UDF函數(shù)即創(chuàng)建好
注:可以在hive的元數(shù)據(jù)庫(kù)中查看FUNCS表,會(huì)有自定義全局UDF函數(shù)的信息;
5、刪除UDF:
指令:drop function?test_encode;
總結(jié)
以上是生活随笔為你收集整理的hive 解密_hive 中自定义 base64 加密 解密 UDF 函数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: h5居中loading_Html5新增标
- 下一篇: eclipse打包项目为aar_Ecli