自定义udf函数进行数据脱敏

论坛 期权论坛 期权     
酱鸭味小仙女   2019-6-30 06:58   2479   0
点击题目下方蓝色字体关注 酱鸭味小仙女


这周有个问题是对于查询SQL的数据结果进行脱敏处理(脱敏处理的意思就是对有些例如身份证电话号码的敏感信息在查询时展示为***),刚开始还觉得很高大上,一实践发现竟然如此简单



第一步:写脱敏方法
新建udf包(原谅我的包名起的有点随意
)
新建一个Java工程,导入以下这个jar包



新建class文件TESTUDF(依然有点随意的类名)继承UDF类,内容就是把传入的字符串全部转化为*******


打成testUdf.jar包

第二步:上传到hdfs目录
将打好的testUdf.jar包上传到hive集群
(刚开始不知道集群的hdfs路径,下面查一下)
进入hive库,找到一张表table0627
命令:desc formatted  table0627
查看表的详细信息,得到hdfs路径


找到路径:
viewfs://***/tmp/***/***/table0627
接下来把testUdf.jar文件放在tmp目录下
先把testUdf.jar放在linux服务器上
然后在linux上使用hadoop上传命令
Hadoop  fs -put  testUdf.jar  viewfs://***/tmp/
确认一下有没有传到
hadoop fs  -ls  viewfs://***/tmp/testUdf.jar
显示以下信息就是已经传到



第三步:创建自定义udf函数
获取文件全类名


文件全类名为:test2.TESTUDF
使用beeline登录集群,在集群自定义udf 函数
命令:
CREATE  FUNCTION   参数1  AS  '参数2'  USING  JAR  '参数3';
参数1:函数名称(一般是库名.函数名,不指定库名时默认default库)
参数2:udf自定义类的全类名
参数3:上传到集群的自定义函数的jar包
例如:
CREATE FUNCTION test.pid_all AS 'test2.TESTUDF' USING JAR'viewfs://***/tmp/testUdf.jar';
执行完命令显示如下结果代表添加成功


执行命令show functions展示所有udf函数,如下图所示



第四步:结果查询
试一下函数有没有效果
执行命令select   库名.函数名 from table
例如:select  test.pid_all from table0627 limit 2;
如下图可以看到对SQL的脱敏改写已成功


真的有点过分简单了感觉,真的感觉越是高大上的东西实现方式越是简单
,朋友们我们下期再见。


END

文字|钵钵酱

编辑|饭饭鸭

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:5
帖子:1
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP