news 2026/7/8 15:43:05

Flink IntervalJoin 绑定数据中时间字段

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Flink IntervalJoin 绑定数据中时间字段

        Flink IntervalJoin 依赖 ** 事件时间(Event Time)** 实现基于数据自身时间字段的关联,核心是通过TimestampAssigner将数据中的时间字段提取为事件时间戳,并配合WatermarkStrategy生成水位线(处理乱序数据)。以下是详细的步骤、代码示例和关键注意事项,教你如何指定数据里的时间字段。

一、核心原理:事件时间 + 水位线

        IntervalJoin 是Keyed Stream的操作,且仅支持事件时间(不支持处理时间)。要绑定数据中的时间字段,需完成两个关键步骤:

  1. 提取事件时间戳:将数据中的时间字段(如order_timepay_time,格式可以是时间戳毫秒数、日期字符串等)转换为 Flink 识别的事件时间戳(毫秒级 Long 类型)。
  2. 生成水位线(Watermark):定义水位线策略,处理乱序数据,确保 IntervalJoin 能正确关联时间范围内的数据。

二、步骤拆解:如何指定数据中的时间字段

步骤 1:定义数据实体(包含时间字段)

        首先定义数据流的实体类,包含需要作为时间字段的属性(如orderTspayTs)。

import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; // 订单数据:订单ID、用户ID、下单时间(毫秒时间戳) @Data @NoArgsConstructor @AllArgsConstructor public class Order { private Integer orderId; private Integer userId; private Long orderTs; // 数据中的时间字段(毫秒级时间戳) } // 支付数据:订单ID、支付金额、支付时间(毫秒时间戳) @Data @NoArgsConstructor @AllArgsConstructor public class Pay { private Integer orderId; private Double amount; private Long payTs; // 数据中的时间字段(毫秒级时间戳) }

步骤 2:为数据流分配时间戳和水位线

        使用assignTimestampsAndWatermarks方法,结合WatermarkStrategy,将数据中的时间字段提取为事件时间戳,并生成水位线。

场景 1:时间字段是毫秒级时间戳(Long 类型)

        这是最常见的场景,直接提取即可。

import org.apache.flink.api.common.eventtime.*; import org.apache.flink.streaming.api.datastream.DataStream; import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; public class IntervalJoinWithTimeField { public static void main(String[] args) throws Exception { StreamExecutionEnvironment env = StreamExecutionEnvironment.ge
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/8 14:48:16

LLaMA-Factory微调全过程

一.背景 LLaMA-Factory(也常被称作 LLaMA Factory)的诞生与普及,是大语言模型(Large Language Model, LLM)从 “通用能力探索” 走向 “行业落地定制化” 的必然产物。其作为一款开源、轻量化、全流程的大模型微调工具链,不仅承接了大模型技术的演进成果,更解决了产业端…

作者头像 李华
网站建设 2026/7/8 18:38:04

小白必看:Keil5下载与安装超详细教程

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个新手友好的Keil5安装助手,功能包括:1. 提供Keil5的官方下载链接和分步安装指南;2. 自动检测系统环境并推荐合适的Keil5版本;…

作者头像 李华
网站建设 2026/7/7 5:57:49

雷达信号处理就像给电磁波装上了智能眼镜,咱们用Matlab搞仿真就是在数字世界里搭积木。今天咱们边玩边学,手把手整几个硬核案例

Matlab雷达信号处理 1.雷达威力图仿真 模糊函数仿真 2.恒虚警检测(CFAR) 3.单脉冲测角 4.线性调频(LFM)信号匹配滤波及脉冲压缩的仿真 5.动态跟踪及A显P显 6.music进行doa估计的仿真 7.star的成像rd算法仿真模糊函数:雷达的时空身份证先来个酷炫的3D模糊图镇…

作者头像 李华
网站建设 2026/7/8 17:48:33

Kotaemon表格生成能力:结构化数据的回答呈现

Kotaemon表格生成能力:结构化数据的回答呈现 在企业级智能系统日益普及的今天,一个常见的痛点逐渐浮现:用户不再满足于“有没有答案”,而是追问“答案是否清晰、可操作、能直接用于决策”。尤其是在财务分析、运营报告、项目管理等…

作者头像 李华
网站建设 2026/7/4 7:00:37

Watt Toolkit:AI如何助力开发者提升效率

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 使用Watt Toolkit的AI功能,自动生成一个Python脚本,实现从指定URL抓取数据并存储到本地数据库的功能。要求包含错误处理、数据清洗和定时任务调度。代码应支…

作者头像 李华