hive和presto一些好用的自定义udf函数

本文介绍了作者开源的Hive-third-functions和Presto-third-functions项目,包含了丰富的自定义UDF函数,如字符串、数组、Map、日期、JSON、位运算、身份证和坐标等函数。用户可以直接使用,项目README提供了详细用法,并欢迎反馈和贡献。
摘要由CSDN通过智能技术生成

自己编写了一些hive和presto的udf函数,最近在github上开源了(可以查看hive-third-functionspresto-third-functions)。有需要的人可以直接下来用,项目README中有详细的用法说明。如果有好的建议或发现了bug,可以在issue提问题。也欢迎加入自己的udf,完善这个第三方函数库。

一、hive-third-functions中包含的函数

可以参考项目说明中的示例来理解这些函数。

1. 字符串函数

函数 描述
pinyin(string) -> string 将汉字转换为拼音
md5(string) -> string md5 哈西函数
sha256(string) -> string sha256 哈西函数

2. 数组函数

函数 描述
array_contains(array<E>, E) -> boolean 判断元素是否在array中.
array_intersect(array, array) -> array 返回两个array的交集.
array_max(array<E>) -> E 返回array中的元素最大值.
array_min(array<E>) -> E 返回array中的元素最小值.
array_join(array, delimiter, null_replacement) -> string 使用delimiter指定的值来连接array中的元素,null_replacement是可选项,用来替代null,返回string.
array_distinct(array) -> array 移除array中的重复元素
array_position(array<E>, E) -> long 返回array中指定值第一次出现的位置,初始值为1,如果没找到返回0.
array_remove(array<E>, E) -> array 移除array中所有指定的值.
array_reverse(array) -> array 翻转array的元素.
array_sort(array) -> array 对array中的元素进行排序,array中的元素必须是可排序的.
array_concat(array, array) -> array 连接两个array.
array_value_count(array<E>, E) -> long 统计array中指定元素出现的次数.
array_slice(array, start, l
要使用自定义UDF函数的方式实现Hive中的CAST函数,需要按照以下步骤进行操作: 1. 创建一个自定义UDF函数类,该类需要继承Hive中的GenericUDF或者AbstractGenericUDF类。具体而言,如果你需要处理单个参数,则可以继承GenericUDF类,如果需要处理多个参数,则可以继承AbstractGenericUDF类。 2. 在类中实现evaluate()方法,该方法用于实现CAST函数的逻辑。该方法需要接收参数,并返回转换后的值。在方法中,你需要编写实现将传入参数转换成指定类型的代码。具体而言,你可以使用Java中的类型转换操作或者其他相关的转换函数来完成这个过程。 3. 将该类编译打包成jar文件,并上传到Hive的classpath中。 4. 在Hive中注册该自定义UDF函数。具体而言,你需要使用CREATE FUNCTION语句来创建该函数,并指定函数的名称、参数类型、返回类型等信息。例如,以下是一个示例代码: ``` CREATE FUNCTION my_cast AS 'com.example.MyCastUDF' USING JAR 'path/to/my-cast-udf.jar'; ``` 5. 在Hive中使用该自定义UDF函数。具体而言,你需要在SELECT语句中调用该函数,并将需要转换的参数作为函数的参数传入。例如,以下是一个示例代码: ``` SELECT my_cast(column_name AS target_type) FROM table_name; ``` 注意,这里的column_name是需要转换的列名,target_type是需要转换成的目标类型。你需要根据具体的情况进行修改。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值