hive_UDTF函数
2024-10-07 01:04:53
hive的UDTF函数是可以输入一行数据然后输出多行多列(可以是单行/单列)的函数
public class Tex extends GenericUDTF { /**
* 对传入的参数进行初始化
* 判断参数个数/类型
* 初始化表结构
*/
@Override
public StructObjectInspector initialize(ObjectInspector[] argOIs) throws UDFArgumentException {
if (argOIs.length != 1) {
throw new UDFArgumentLengthException("actuly only one argument is expected");
}
if (argOIs[0].getCategory() != ObjectInspector.Category.PRIMITIVE) {
throw new UDFArgumentTypeException(0, "type of String is expected but " + argOIs[0].getTypeName() + "is passed");
} //初始化表结构
//创建数组列表存储表字段
List<String> fieldNames = new LinkedList<String>();
List<ObjectInspector> fieldIOs = new LinkedList<ObjectInspector>(); //表字段
fieldNames.add("name");
fieldNames.add("age");
//表字段数据类型
fieldIOs.add(PrimitiveObjectInspectorFactory.javaStringObjectInspector);
fieldIOs.add(PrimitiveObjectInspectorFactory.javaStringObjectInspector); //将表结构两部分聚合在一起
return ObjectInspectorFactory.getStandardStructObjectInspector(fieldNames, fieldIOs);
} /**
* 对数据处理的代码
* 如果是多列的话,可以将每一行的数据存入数组中,然后将数组传入forward,
* forward每调用一次都会产生一行数据
*/
@Override
public void process(Object[] args) throws HiveException {
String str = args[0].toString();
String[] splited = str.split(";");
for (int i = 0; i < splited.length; i++) {
try {
String[] res = splited[i].split(",");
forward(res);
} catch (Exception e) {
continue;
} }
} //方法调用完毕时关闭方法
@Override
public void close() throws HiveException { }
}
有一点问题:
之前添加的jar包没有清除处理的话,新添加的jar包如果依旧是之前的类的路径的话,创建的新函数会指向之前添加的jar包,导致修改后的代码函数无法生效;
我是暂时将类名改了,暂时不清楚怎么清除add添加的文件,找到后,完善
最新文章
- <;译>;Selenium Python Bindings 4 - Locating Eelements
- ajax 传参 乱码问题
- Hibernate关联映射1:一对一主键关联
- Java GC 专家系列3:GC调优实践
- IceMx.Mvc 我的js MVC 框架七、完善植物大战僵尸(增加阳光的消费和获得)
- java的智能提示无法打开
- jmeter遇到问题及解决办法
- Luogu P3959 宝藏
- Fedora Server 21下OpenJdk和Oracle Jdk共存
- w97常用功能代码
- angular 程序架构
- mysql中列的增删改
- 安装Oracle 11G Enterprise Manager工具
- CocoSourcesCS 3
- ASP.NET SignalR 与LayIM配合,轻松实现网站客服聊天室(六)之 好友申请、同意、拒绝
- java web程序中项目名的更改(http://localhost:8080/)后面的名字
- IO系列之File
- Redis错误解决:(error) MISCONF Redis is configured to save RDB snapshots
- bzoj2744 [HEOI2012]朋友圈——二分图匹配
- webpack 4 移除 CommonsChunkPlugin,取而代之的是两个新的配置项(optimization.splitChunks 和 optimization.runtimeChunk