hive UDAF行列转换
来源:互联网 发布:按键精灵 数据库插件 编辑:程序博客网 时间:2024/05/01 12:41
目标实现
1 a
1 b
2 a
2 c
转换为
1 a,b
2 a,c
package com.hive.udf;//用法 select a,concat1(b,',') from concat_test group by a;import org.apache.hadoop.hive.ql.exec.UDAF;import org.apache.hadoop.hive.ql.exec.UDAFEvaluator;public class Concat extends UDAF { public static class ConcatUDAFEvaluator implements UDAFEvaluator{ public static class PartialResult{ String result; String delimiter; } private PartialResult partial; //init函数实现接口UDAFEvaluator的init函数。 public void init() { partial = null; } //iterate接收传入的参数,并进行内部的轮转。其返回类型为boolean。 //接受传入的参数,并进行内部的轮转 public boolean iterate(String value,String deli){ if (value == null){ return true; } if (partial == null){ partial = new PartialResult(); partial.result = new String(""); if( deli == null || deli.equals("") ) { partial.delimiter = new String(","); } else { partial.delimiter = new String(deli); } } if ( partial.result.length() > 0 ) { partial.result = partial.result.concat(partial.delimiter); } partial.result = partial.result.concat(value); return true; } //terminatePartial无参数,其为iterate函数轮转结束后,返回轮转数据,terminatePartial类似于hadoop的Combiner。 public PartialResult terminatePartial(){ return partial; } //merge接收terminatePartial的返回结果,进行数据merge操作,其返回类型为boolean。 public boolean merge(PartialResult other){ if (other == null){ return true; } if (partial == null){ partial = new PartialResult(); partial.result = new String(other.result); partial.delimiter = new String(other.delimiter); } else { if ( partial.result.length() > 0 ) { partial.result = partial.result.concat(partial.delimiter); } partial.result = partial.result.concat(other.result); } return true; } public String terminate(){ return new String(partial.result); } }}
打包jar后
add jar rowtocol.jar
create temporary function concat_test as'com.hive.udf.Concat';
select a,concat_test(b,',') from concat_test group by a;
0 0
- hive UDAF行列转换
- hive行列转换总结
- hive行列转换
- hive sql 行列转换
- hive udaf
- hive udaf
- Hive行列转换-lateral view的使用
- Hive典型应用场景之行列转换
- Hive UDAF 开发
- Hive UDAF开发
- Hive UDF与UDAF
- HIVE UDF/UDAF/UDTF
- hive UDF UDAF
- hive UDAF 的DEMO
- hive udf 与udaf
- Hive+UDAF简单示例
- hive udaf 例子
- Hive-UDAF开发指南
- JSON详解
- 日志分析
- SQL server 日志压缩
- Linux用户管理
- dllexport和dllimport的区别
- hive UDAF行列转换
- MySQL命令大全
- 招标系统-easyui插件中标签选择和创建
- ios 学习笔记(三)
- 在eclipse中执行数据库脚本
- ubuntu 14.04 安装 INetSim 模拟Internet
- Android——蓝牙连接打印机
- Solr配置中文分词器IK Analyzer详解
- Android学习