代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Hive
】
UDAF行列转换
作者:
振峰
/ 发布于
2017/5/22
/
518
UDAF行列转换
目标实现 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 踩
试试其它关键字
同语言下
.
hive 数据清理--数据去重
.
实现一个字段包含另一个字段的查询
.
Hive窗口函数之累积值、平均值、首尾值的计算学习
.
Hive 累积和的计算
.
hive表创建,删除,导入数据,删除数据
.
INNER JOIN连接两个表、三个表、五个表的SQL语句
.
多表inner join用法
.
Hive创建临时表
.
分组排序 取top N
.
hive指定hadoop执行队列
可能有用的
.
hive 数据清理--数据去重
.
实现一个字段包含另一个字段的查询
.
Hive窗口函数之累积值、平均值、首尾值的计算学习
.
Hive 累积和的计算
.
hive表创建,删除,导入数据,删除数据
.
INNER JOIN连接两个表、三个表、五个表的SQL语句
.
多表inner join用法
.
Hive创建临时表
.
分组排序 取top N
.
hive指定hadoop执行队列
振峰
贡献的其它代码
(
9
)
.
判断用户输入的是否为IP地址
.
创建10个用户,并分别设置密码,密码要求10位且包含大
.
微信生成带参数的二维码
.
List〈string〉和string[]数组之间的相互转换
.
UDAF行列转换
.
查询所有本周,本月的数据
.
Jquery Ajax 调用 ashx 返回结果
.
XSD校验XML文件
.
在海量文本中找出某个单词的位置信息
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3