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添加的文件,找到后,完善

最新文章

  1. &lt;译&gt;Selenium Python Bindings 4 - Locating Eelements
  2. ajax 传参 乱码问题
  3. Hibernate关联映射1:一对一主键关联
  4. Java GC 专家系列3:GC调优实践
  5. IceMx.Mvc 我的js MVC 框架七、完善植物大战僵尸(增加阳光的消费和获得)
  6. java的智能提示无法打开
  7. jmeter遇到问题及解决办法
  8. Luogu P3959 宝藏
  9. Fedora Server 21下OpenJdk和Oracle Jdk共存
  10. w97常用功能代码
  11. angular 程序架构
  12. mysql中列的增删改
  13. 安装Oracle 11G Enterprise Manager工具
  14. CocoSourcesCS 3
  15. ASP.NET SignalR 与LayIM配合,轻松实现网站客服聊天室(六)之 好友申请、同意、拒绝
  16. java web程序中项目名的更改(http://localhost:8080/)后面的名字
  17. IO系列之File
  18. Redis错误解决:(error) MISCONF Redis is configured to save RDB snapshots
  19. bzoj2744 [HEOI2012]朋友圈——二分图匹配
  20. webpack 4 移除 CommonsChunkPlugin,取而代之的是两个新的配置项(optimization.splitChunks 和 optimization.runtimeChunk

热门文章

  1. P4981 父子 Cayley公式
  2. 回文数二(acm训练)
  3. HGOI 20190830 题解
  4. 两个线程,一个线程打印1~52,另一个线程打印字母A-Z,打印顺序为12A34B56C……5152Z
  5. ERROR: virtualenvwrapper could not find virtualenv in your path
  6. css基础(浮动 清除f浮动)
  7. Java 读取模板并生成HTML静态文件实例
  8. JS判定数据类型
  9. leetcode 547朋友圈
  10. n个骰子可能的点数和