Doris学习笔记-Java自定义UDAF

项目最近需要做一些数据统计方面的东西,发现数据字段都是很长一串数字的字符串,Doris自带的函数无法对其进行相应的运算操作,需要扩展实现相关的操作运算。
主要参考官方的文档资料完成相关的自定义扩展。需要注意的是在使用Java代码编写UDAF时,有一些必须实现的函数(标记required)和一个内部类State。
  • SUM求和运算函数
public class Sum {//Need an inner class to store data/*required*/public static class State {/*some variables if you need */public BigDecimal sum;}/*required*/public State create() {/* here could do some init work if needed */State state = new State();state.sum = new BigDecimal(0);return state;}/*required*/public void destroy(State state) {/* here could do some destroy work if needed */}/*Not Required*/public void reset(State state) {/*if you want this udaf function can work with window function.*//*Must impl this, it will be reset to init state after calculate every window frame*//**state.sum = new BigDecimal(0);**/}/*required*///first argument is State, then other types your inputpublic void add(State state, String value) throws Exception {try {/* here doing update work when input data*/if (null != value && !"".equals(value)) {state.sum = state.sum.add(new BigDecimal(value));}} catch (Exception e) {log.info(e.getMessage());}}/*required*/public void serialize(State state, DataOutputStream out)  {/* serialize some data into buffer */try {out.writeUTF(state.sum.toString());} catch (Exception e) {/* Do not throw exceptions */log.info(e.getMessage());}}/*required*/public void deserialize(State state, DataInputStream in)  {/* deserialize get data from buffer before you put */String value = "0";try {value = in.readUTF();} catch (Exception e) {/* Do not throw exceptions */log.info(e.getMessage());}state.sum = new BigDecimal(value);}/*required*/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/625158.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络安全服务

有效防御Cc、API接口、http、tcp、WEB应用扫描/爬虫、SYN、WAF、DDOS、UDP、入侵、渗透、SQL注入、XXS跨站脚本攻击、远程恶意代码执行、session ion fixation、Webshell攻击、恶意请求,恶意扫描、暴击破解、CSRF等各种攻击。不用迁移数据,服务器用哪里…

HDFS和MapReduce综合实训

文章目录 第1关:WordCount词频统计第2关:HDFS文件读写第3关:倒排索引第4关: 网页排序——PageRank算法 第1关:WordCount词频统计 测试说明 以下是测试样例: 测试输入样例数据集:文本文档test1…

Java实战之每日海报

前言 使用java生成每日海报。 项目起因是巧合下遇到了一篇很棒的文档,说的是用程序来实现每日生成一个海报。如果之后加上自动发布的功能,简直就是太棒了啊! 样例图如下: 每日海报 思路 访问某词站的API获取网络图片&#…

GBASE regexp_replace函数 与 db2 translate函数比较

db2 translate函数 以下内容参考自文档: translate 函数 官方示例: 示例1: fn:translate(Test literal,el,om) -- RETURN RESULT: Tost mitoram上述式子的意思为: 对于字符串:‘Test literal’,使用o 替代 e,使用 m…

在线客服系统如何与社交媒体集成?

在线客服系统与社交媒体的集成可以实现以下功能: 直接接入社交媒体平台:通过API集成,客服系统可以与主流社交媒体平台(如微信、微博、Facebook等)直接对接,客户可以直接在社交媒体上发起咨询或投诉&#x…

Java持久层框架之争:选择最佳方案来提升你的开发效率!

1、前言 在现代软件开发领域,选择适合的持久层框架是至关重要的一步。持久层框架可以帮助我们管理数据访问、数据库连接、事务处理等复杂的数据库操作,从而提升开发效率和代码质量。 然而,在众多的Java持久层框架中,选择最佳方案并…

ActiveMQ:专注消息传递,助您构建高效稳定的系统

在数字化世界的今天,应用程序和系统之间的通信变得日益重要,为了确保数据能够在不同的服务和组件之间高效、可靠地传输,消息队列技术应运而生。 Apache ActiveMQ 作为一种流行的开源消息队列技术,为企业级应用提供了强大的支持&am…

LeeCode前端算法基础100题(19)反转字符串中的单词

一、问题详情: 给你一个字符串 s ,请你反转字符串中 单词 的顺序。 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。 返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。 注意:输入字符串 s中可能会存在前导空格、尾随空格…

防止网站被采集的10个技巧

防止网站被采集的10个技巧 一、robots.txt文件设置 robots.txt文件是用来告诉搜索引擎哪些页面可以被抓取,哪些页面不应该被抓取的。通过修改robots.txt文件,可以控制搜索引擎爬虫对网站的访问行为。 二、设置meta标签 在网页头部添加meta标签&#x…

算法通关村番外篇-LeetCode编程从0到1系列五

大家好我是苏麟 , 今天带来算法通关村番外篇-LeetCode编程从0到1系列五 . 数学 1523. 在区间范围内统计奇数数目 描述 : 给你两个非负整数 low 和 high 。请你返回 low 和 high 之间(包括二者)奇数的数目。 题目 : LeetCode 1523. 在区间范围内统计奇…

Spring Data JPA 踩过的坑实录

前言 游戏中台一直在使用spring 全家桶, 本文会左右使用Spring Data JPA的坑点记录总结 主要给大家总结介绍了关于使用Spring JPA注意事项及踩过的坑。 案例1: 为什么只调用了 org.springframework.data.repository.CrudRepository#findById(ID id) 却…

孤儿进程与僵尸进程以及僵尸进程的解决

孤儿进程: 定义: 父进程运行结束,但子进程还在运行(未运行结束),这样的子进程就称为孤儿进程( Orphan Process )。 过程: 每当出现一个孤儿进程的时候,内核就…

rtklib读取原始数据是一次读取了一个文件的全部数据

一般来说,rtklib读取观测值文件(o文件)和导航文件(n文件)进行解算。 读取文件的时候,并非一次读取一个历元,而是将一个文件所有历元的数据都读取完毕以后,再进行解算。 这看起来是…

《C++大学教程》4.34阶乘

题目: 对一个非负整数n来说,它的阶乘可以写成 n! (读作“n的阶乘”),其计算公式定义如下: n! n x (n-1) x (n-2)x......x1(对于大于1的 n ) 和 n! 1 ( 对于等于0或者等于1的n ) 例如,5&…

重学Java 6 流程控制语句

我与我,至死不渝 ——24.1.15 模块重点: ①会使用Scanner和Random ②会使用switch以及知道case的穿透性 ③会使用if ④会使用for循环,while循环,嵌套循环 一、键盘录入_Scanner 1.概述:是Java定义好的一个类 2.作用&am…

经典算法-模拟退火算法的python实现

经典算法-模拟退火算法的python实现 模拟退火算法基本思想 模拟退火算法来源于固体退火原理,将固体加温至充分高,再让其徐徐冷却。加温时,固体内部粒子随温度升高变为无序状,内能增大,而缓慢冷却时粒子又逐渐趋有序。…

网络安全等级保护测评规划与设计

笔者单位网络结构日益复杂,应用不断增多,使信息系统面临更多的风险。同时,网络攻防技术发展迅速,攻击的技术门槛随着自动化攻击工具的应用也在不断降低,勒索病毒等未知威胁也开始泛滥。基于此,笔者单位拟进…

一篇文章带你搞懂多线程面试相关的一些问题

目录 1.Callable接口 1.1使用Callable接口来创建线程 1.1相关面试题: 介绍下 Callable 是什么 2.JUC常见的类(java.util,concurrent) 2.1ReentrantLock ReentrantLock和sychronized的区别 3.信号量 4.CountDownLatch 5.线程安全的集合类 5.1多线…

yolov7_Obb环境安装

下载obb代码之后,除了安装python和pytorch环境,由于还需要编译nms部分的c代码,因此还需要安装Visual Studio. 这里推荐安装Visual Studio2019版本。 然后在系统环境中配置环境变量 C:\Program Files (x86)\Microsoft Visual Studio\2019\Co…

案例127:基于微信小程序的预约挂号系统

文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序…