以往的hive的udf都是java开发的。今天看到一篇博文发现hive也支持Python开发udf.写点东西记录一下。
建表语句
表中的数据
将数据插入表中
python 编写UDF
import sys
for line in sys.stdin:
data = line.strip()
print(data[:4])
执行UDF
select transform(idcard) using 'python3 udf_test.py' as birth_year from udf_test;
严格意义来说其实python 编写的不是udf,hive的udf是由java编写的并注册为函数使用。
但是hive支持另一种方式实现udf的目的,有利有弊吧。
优点:
支持多种语言,例如python,实现udf的功能。
缺点:
使用方式不如udf方便。需要将数据以行的形式传递进去,transform内部进行切割,再以行的形式返回。即使某些字段是没用的。
效率不如udf高。