一、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 函数相关推荐

  1. 在java中使用base64加密解密的方法

    base64原理 Base64编码方法,要求把每三个8Bit的字节转换为四个6Bit的字节,其中,转换之后的这四个字节中每6个有效bit为是有效数据,空余的那两个 bit用0补上成为一个字节.因此Ba ...

  2. 【js加解密】JavaScript的Base64加密解密方法使用

    一.Base64加解密 function Base64() {// private property_keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefgh ...

  3. java中使用base64加密解密16进制方法

    代码: import java.util.Base64; import org.apache.commons.codec.binary.Hex;public static void main(Stri ...

  4. js中实现base64加密、解密

    //base64加密 解密/* //1.加密 var result = Base.encode('125中文'); //--> "MTI15Lit5paH"//2.解密 va ...

  5. android中base64加密,Android应用开发之android自带Base64加密解密

    本文将带你了解Android应用开发之android自带Base64加密解密,希望本文对大家学Android有所帮助. android项目引用不到以下两个java类 import sun.misc.B ...

  6. Flex中的Base64加解密

    Flex中的Base64加解密 Flex sdk3就内置了Base64的加/解密工具类 分别是 mx.utils.Base64Encoder mx.utils.Base64Decoder Base64 ...

  7. ImageUtils.java:图片处理工具类[裁剪/图片水印/文字水印/缩放补白/Base64加密解密]

    用到的jar包: commons-beanutils-1.8.0.jar commons-codec-1.10.jar package com.zhenzhigu.commons.util;   im ...

  8. 在线base64加密解密工具

    在线base64加密解密工具 在线base64加密解密工具 本工具支持对字符串进行base64加密和解密(严格来说,只能算是字符串编码),纯客户端计算,数据不会上传到服务器中,请放心使用. https ...

  9. 在线BASE64加密解密、UrlEncode编码/解码、native/ascii在线转换工具 -toolfk程序员工具网

    本文要推荐的[ToolFk]是一款程序员经常使用的线上免费测试工具箱,ToolFk 特色是专注于程序员日常的开发工具,不用安装任何软件,只要把内容贴上按一个执行按钮,就能获取到想要的内容结果.Tool ...

最新文章

  1. .Net 之匿名类(AnonymousType)(转载)
  2. 未安装在此服务器场中,无法添加到该范围
  3. mysql 创建唯一索引_Mysql创建索引
  4. 第3课 天安门广场 《小学生C++趣味编程》--C++、Scratch
  5. 「LibreOJ#516」DP 一般看规律
  6. 输出字符串全排列 c语言,41.输出全排列-题解(C语言代码)
  7. 【数据挖掘算法与应用】——数据挖掘导论
  8. 线性代数常用的公式LaTeX表示
  9. Linux查看目录busy,Linux中遇到device is busy的处理方法
  10. 徐波 博士 计算机,中文问答系统中问题分类技术研究
  11. Android自定义控件(一)
  12. 《管理长歌行》—— 小花狗的错误
  13. python无限制邮件群发软件_收藏 - 使用Python通过SMTP协议群发/单发邮件方法
  14. 如何用ffmpeg截取视频片段截取时间不准确的坑
  15. ICP 问题之 SVD
  16. 二.网络布线与进制转换——详解
  17. pip 安装keystone_基于Ubuntu12.04下的Keystone源码安装
  18. CSS——景深perspective属性
  19. 原生JS 实现投掷骰子效果
  20. 【爬虫】学习:App数据的爬取

热门文章

  1. VMprotect静态跟踪 字节码反编译
  2. 014 Android之Cydia与Xposed框架入门
  3. HttpURLConnection 发送post请求。并将结果以JSONObject对象返回的轮子
  4. Linux 手动或自动挂载 NTFS 硬盘
  5. 4、删除数据表(DORP TABLE语句)
  6. 2021暑假每日一题 【week2 完结】
  7. 2.1.3 字符与字符串
  8. Freemarker介绍
  9. 链表中环的入口结点 python_链表中环的入口结点
  10. 卫生部手术分级分类目录_双眼皮手术安全吗?一位多年经验的医生告诉你答案...