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 函数相关推荐
- 在java中使用base64加密解密的方法
base64原理 Base64编码方法,要求把每三个8Bit的字节转换为四个6Bit的字节,其中,转换之后的这四个字节中每6个有效bit为是有效数据,空余的那两个 bit用0补上成为一个字节.因此Ba ...
- 【js加解密】JavaScript的Base64加密解密方法使用
一.Base64加解密 function Base64() {// private property_keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefgh ...
- java中使用base64加密解密16进制方法
代码: import java.util.Base64; import org.apache.commons.codec.binary.Hex;public static void main(Stri ...
- js中实现base64加密、解密
//base64加密 解密/* //1.加密 var result = Base.encode('125中文'); //--> "MTI15Lit5paH"//2.解密 va ...
- android中base64加密,Android应用开发之android自带Base64加密解密
本文将带你了解Android应用开发之android自带Base64加密解密,希望本文对大家学Android有所帮助. android项目引用不到以下两个java类 import sun.misc.B ...
- Flex中的Base64加解密
Flex中的Base64加解密 Flex sdk3就内置了Base64的加/解密工具类 分别是 mx.utils.Base64Encoder mx.utils.Base64Decoder Base64 ...
- ImageUtils.java:图片处理工具类[裁剪/图片水印/文字水印/缩放补白/Base64加密解密]
用到的jar包: commons-beanutils-1.8.0.jar commons-codec-1.10.jar package com.zhenzhigu.commons.util; im ...
- 在线base64加密解密工具
在线base64加密解密工具 在线base64加密解密工具 本工具支持对字符串进行base64加密和解密(严格来说,只能算是字符串编码),纯客户端计算,数据不会上传到服务器中,请放心使用. https ...
- 在线BASE64加密解密、UrlEncode编码/解码、native/ascii在线转换工具 -toolfk程序员工具网
本文要推荐的[ToolFk]是一款程序员经常使用的线上免费测试工具箱,ToolFk 特色是专注于程序员日常的开发工具,不用安装任何软件,只要把内容贴上按一个执行按钮,就能获取到想要的内容结果.Tool ...
最新文章
- .Net 之匿名类(AnonymousType)(转载)
- 未安装在此服务器场中,无法添加到该范围
- mysql 创建唯一索引_Mysql创建索引
- 第3课 天安门广场 《小学生C++趣味编程》--C++、Scratch
- 「LibreOJ#516」DP 一般看规律
- 输出字符串全排列 c语言,41.输出全排列-题解(C语言代码)
- 【数据挖掘算法与应用】——数据挖掘导论
- 线性代数常用的公式LaTeX表示
- Linux查看目录busy,Linux中遇到device is busy的处理方法
- 徐波 博士 计算机,中文问答系统中问题分类技术研究
- Android自定义控件(一)
- 《管理长歌行》—— 小花狗的错误
- python无限制邮件群发软件_收藏 - 使用Python通过SMTP协议群发/单发邮件方法
- 如何用ffmpeg截取视频片段截取时间不准确的坑
- ICP 问题之 SVD
- 二.网络布线与进制转换——详解
- pip 安装keystone_基于Ubuntu12.04下的Keystone源码安装
- CSS——景深perspective属性
- 原生JS 实现投掷骰子效果
- 【爬虫】学习:App数据的爬取
热门文章
- VMprotect静态跟踪 字节码反编译
- 014 Android之Cydia与Xposed框架入门
- HttpURLConnection 发送post请求。并将结果以JSONObject对象返回的轮子
- Linux 手动或自动挂载 NTFS 硬盘
- 4、删除数据表(DORP TABLE语句)
- 2021暑假每日一题 【week2 完结】
- 2.1.3 字符与字符串
- Freemarker介绍
- 链表中环的入口结点 python_链表中环的入口结点
- 卫生部手术分级分类目录_双眼皮手术安全吗?一位多年经验的医生告诉你答案...