1、编写UDF函数,来将原来创建的buck_ip_test表中的英文国籍转换成中文
iptest.txt文件内容:
|
|
表数据截图:
UdfTest.java代码如下:
|
|
在eclipse测试无问题后,导出成utftest.jar并上传到服务器的/opt目录
|
|
然后在Hive中进行查询:
|
|
执行结果如下图:
这样一个简单的udf就开发完成啦
2、Hive中使用udf对JSON进行处理
数据文件movie.txt内容如下:
|
|
将数据导入到hive中的rating表中:
|
|
结果如下图:
在本例中我们使用ObjectMapper来处理json的数据,
首先创建MovierateBean.java,代码如下:
|
|
然后创建MovieJsonTest.java,代码如下:
|
|
将上述文件打包成movie.jar,并上传到服务器的/opt目录下,并执行如下代码:
|
|
执行结果如下:
可以看到原来的json格式以及被解析成对应的字段了
3、Hive Transform简单介绍
Hive的UDF、UDAF需要通过java语言编写。Hive提供了另一种方式,达到自定义UDF和UDAF的目的,但使用方法更简单。这就是TRANSFORM。TRANSFORM语言支持通过多种语言,实现类似于UDF的功能。
Hive还提供了MAP和REDUCE这两个关键字。但MAP和REDUCE一般可理解为只是TRANSFORM的别名。并不代表一般是在map阶段或者是在reduce阶段调用。详见官网说明。
我们可以使用如下的python脚本代替上面的UDF函数:
服务器端/opt/movie_trans.py脚本内容如下:
|
|
在hive中执行如下脚本:
|
|
执行结果如下图:
可以看到我们使用transform实现了上述UDF实现的功能
原文地址:https://www.cnblogs.com/cangos/p/6486651.html