hive常用的函数和udf开发

hive的udf开发

继承udf这个类,方法重载evaluate

1. add jar /opt/udftest.jar
2. create temporary function 功能名as  “主类路径”;

使用python脚本transform开发:

1. add FILE weekday_mapper.py;
2. SELECT TRANSFORM (必须是所有的字段,或者*)USING ‘python 脚本’ AS (生成的字段名)FROM t_rating;
数据:
{"movie":"3664","rate":"4","timeStamp":"961685303","uid":"5225"}
新建一张表加载进去数据
create table temp(line string);
脚本:
#!/bin/python
import sys
import datetime
import json
for line in sys.stdin:
        if line!='\n':
                result=json.loads(line.strip())
                movie=result['movie']
                rate=result['rate']
                uid=result['uid']
                weekday =datetime.datetime.fromtimestamp(float(result['timeStamp'])).
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Hive中的自定义函数UDF)可以使用Java或Python编写,下面分别介绍两种语言的自定义函数开发。 1. Java自定义函数开发 Java自定义函数需要实现org.apache.hadoop.hive.ql.udf.generic.GenericUDF接口,该接口定义了五个方法,分别是: - initialize:初始化方法,用于获取函数参数信息。 - getDisplayString:获取函数的显示字符串,用于在EXPLAIN语句中展示函数信息。 - evaluate:函数计算方法,用于计算函数的返回值。 - getReturnType:获取函数的返回类型。 - getArgumentTypes:获取函数的参数类型。 下面是一个示例代码,实现了一个将字符串转换为大写的自定义函数: ```java package com.example.udf; import org.apache.hadoop.hive.ql.exec.Description; import org.apache.hadoop.hive.ql.exec.UDF; import org.apache.hadoop.hive.ql.udf.generic.GenericUDF; import org.apache.hadoop.hive.ql.udf.generic.GenericUDFUtils; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorConverters; import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory; import org.apache.hadoop.io.Text; @Description(name = "to_upper", value = "_FUNC_(str) - Convert string to upper case", extended = "Example:\n" + " > SELECT _FUNC_('hello') FROM src LIMIT 1;\n") public class ToUpperUDF extends UDF { public Text evaluate(Text input) { if (input == null) { return null; } return new Text(input.toString().toUpperCase()); } } ``` 2. Python自定义函数开发 Python自定义函数需要继承org.apache.hadoop.hive.ql.exec.UDF类,并实现evaluate方法,该方法用于计算函数的返回值。下面是一个示例代码,实现了一个将字符串转换为小写的自定义函数: ```python from org.apache.hadoop.hive.ql.exec import UDF from org.apache.hadoop.io import Text class ToLowerUDF(UDF): def evaluate(self, input): if input is None: return None return Text(input.toString().lower()) ``` 以上是Java和Python自定义函数的示例代码,开发者可以根据实际需求编写自己的自定义函数,并在Hive中使用。注意,自定义函数需要先打包成jar文件或python文件,然后通过ADD JAR或ADD FILE命令添加到Hive中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值