Flink-Java自建UDF使用案例

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: Flink-Java自建UDF使用案例

准备环境

1. 安装JDK

建议安装JDK 1.8以上版本

2. 安装开发工具

本文档测试使用IDEA工具,具体安装方式可以参考在线资料。


开发流程

1. 创建项目

可以直接导入项目代码  ASI_UDX_Demo 到本地,本篇以下面为例测试整个流程

packageASI_UDF;
importorg.apache.flink.table.functions.ScalarFunction;
publicclassASI_UDFextendsScalarFunction {
publicStringeval(Strings, Integerbegin, Integerend) {
returns.substring(begin, end);
    }
}

2. 开发UDF

packageASI_UDF;
importorg.apache.flink.table.functions.ScalarFunction;
publicclassASI_UDFextendsScalarFunction {
publicStringeval(Strings, Integerbegin, Integerend) {
returns.substring(begin, end);
    }
}


3. 本地测试

创建测试类在本地测试,并验证结果符合预期,如下所示:

//<dependency>//<groupId>junit</groupId>//<artifactId>junit</artifactId>//<version>4.12</version>//</dependency>publicclassTEST_ASI {
@TestpublicvoidtestUdf() {
ASI_UDFudf=newASI_UDF();
System.out.println(udf.eval("HELLO",1,2));
    }
}


4. 本地打包

双击执行Maven命令打jar包,如下所示:

打包后这里可以看到对应jar包,如下所示:    

5. 上传资源

📎ASI_UDX-TEST-1.0-SNAPSHOT.jar

6. 验证UDF

CREATE TEMPORARY TABLE ASI_UDF_Source (  a VARCHAR,  b INT,  c INT) WITH ('connector'='datagen');CREATE TEMPORARY TABLE ASI_UDF_Sink (  a VARCHAR) WITH ('connector'='blackhole');INSERTINTO ASI_UDF_Sink
SELECT ASI_UDF(a,2,4)FROM ASI_UDF_Source;


上线查询输出结果, 在作业运维页面,单击目标作业名称操作列的启动。启动成功后,ASI_UDF_Sink表每行会被插入ASI_UDF_Source表中a字段每行字符串的第2~4位字符。

相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
相关文章
|
2月前
|
设计模式 监控 Java
Java多线程基础-11:工厂模式及代码案例之线程池(一)
本文介绍了Java并发框架中的线程池工具,特别是`java.util.concurrent`包中的`Executors`和`ThreadPoolExecutor`类。线程池通过预先创建并管理一组线程,可以提高多线程任务的效率和响应速度,减少线程创建和销毁的开销。
43 2
|
2月前
|
安全 Java
Java多线程基础-10:代码案例之定时器(一)
`Timer` 是 Java 中的一个定时器类,用于在指定延迟后执行指定的任务。它常用于实现定时任务,例如在网络通信中设置超时或定期清理数据。`Timer` 的核心方法是 `schedule()`,它可以安排任务在延迟一段时间后执行。`
52 1
|
3天前
|
Java 测试技术 数据库连接
解密Java事务传播行为与隔离级别:案例详解与解决方案
解密Java事务传播行为与隔离级别:案例详解与解决方案
5 1
|
14天前
|
关系型数据库 MySQL Java
实时计算 Flink版操作报错合集之udf是怎么定义接收和返回的数据类型的
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
4天前
|
JSON Java 数据安全/隐私保护
一篇文章讲明白Java第三方支付接入案例(支付宝)
一篇文章讲明白Java第三方支付接入案例(支付宝)
|
4天前
|
JSON Java 数据安全/隐私保护
一篇文章讲明白Java第三方支付接入案例(支付宝)
一篇文章讲明白Java第三方支付接入案例(支付宝)
12 0
|
5天前
|
Java BI Serverless
Java8 Stream深度解析:30个案例3万字助你精通集合筛选、归约、分组与聚合操作
Java8 Stream深度解析:30个案例3万字助你精通集合筛选、归约、分组与聚合操作
|
5天前
|
设计模式 算法 Java
Java中的设计模式:实战案例分享
Java中的设计模式:实战案例分享
|
7天前
|
Java
java的lambda延时执行特性案例
java的lambda延时执行特性案例
8 0
|
10天前
|
Java 测试技术 开发者
Java Socket编程实战案例:打造实时通信应用
【6月更文挑战第21天】Java Socket编程用于构建实时通信应用,如简易聊天系统。阻塞式Socket在读写时会阻塞线程,适合入门级应用。非阻塞式Socket(NIO)更高效,适用于高并发场景,允许线程在无数据时立即返回。通过对比两者,可理解实时通信技术的选择关键。示例代码展示了服务器端和客户端的实现。学习Socket编程能为应对未来挑战打下基础。