【技术帖】KAP v2.4新特性:可计算列结合UDF

何京珂
2017年 8月 24日

作者:何京珂

编辑:Sammi

在上一篇介绍可计算列的文章中,我们对可计算列的基本使用做了全面的介绍(详情点击:【技术帖】KAP 2.4新特性:可计算列 Computed Column),今天,本文将着重介绍如何在可计算列中结合Hive UDF实现更多扩展计算。

什么是UDF?

UDF即User defined function,用户定义函数,当Hive中自带的函数不能满足用户对数据计算、处理的需求时,KAP的可计算列还支持内置使用Hive UDF,从而进一步扩展可计算列的功能。

下面我们就用一个案例给大家介绍如何在KAP中结合Hive UDF使用可计算列。

准备工作

首先我们以一个用户表为例,如下图所示的数据:

图 1

我们已经获得用户的一部分个人信息:姓名、性别、年龄、省份等,但是实际分析中了可能我们希望获得用户的更多人信息如用户的星座,用户姓名的拼音等。通过使用第三方的Hive UDF我们可以从已有的个人信息中提取出更多需要的信息。Hive自带的函数无法实现对星座,拼音等特殊信息进行提取,因此我们需要依赖第三方UDF进行处理。

Github上的Hive Third Function这个UDF包就可以解决上述数据处理的需求,首先我们需要将这个UDF加载到系统的Hive中。

安装 UDF包

GitHub网页上下载最新版的hive third function的jar 包,将jar包解压缩放到系统环境的目录中。

图 2

把引用UDF jar包的语句放入${HOME}/.hiverc 文件中:

vi .hiverc

图 3

启动hive测试UDF是否已经正确加载:

select pinyin('中国');
select zodiac_cn('1989-01-08');

图 4

如果上图中的函数能够正常返回结果,说明UDF函数jar包已经正确加载完成。下面我们就可以直接在可计算列中使用这些第三方的函数了。

在KAP可计算列中使用UDF函数

首先在KAP中将目标的用户表进行同步。

图 5

创建模型。

图 6

在模型中引用UDF函数创建姓名拼音、星座等可计算列。这些可计算列所使用的函数列表如下,下面的函数都是来自前文加载的UDF包。

图 7

创建可计算列将用户姓名转化成拼音。

pinyin(name)

图8

创建可计算列从用户生日中获取星座:

zodiac_cn(BIRTHDAY)

图 9

所有模型及可计算列都定义完毕后,相应的创建Cube。

图 10

Cube构建好后在分析页面调用users表中的数据。

图11

可以看到所有的可计算列都已经计算出来了。

图 12

总结

利用上文介绍的方法,使用可计算列结合第三方UDF对数据进行信息提取、信息转化,在实际应用案例也可以对超高基维的字段可以进行分组等,从而有效的对数据进行降维。更重要的是可计算列在Cube构建后也和一般源数据列一样被预计算,因此可以充分发挥Cube的性能优势。

申请试用
关注我们