Flink 读文本文件TextLineInputFormat + FileSource(批/流一体)+ 目录持续监控

1. 依赖准备:flink-connector-files

Java 工程要使用文本文件 Source,需要引入 Flink 的文件连接器依赖:

<dependency><groupId>org.apache.flink</groupId><artifactId>flink-connector-files</artifactId><version>2.2.0</version></dependency>

PyFlink 用户通常可以直接在作业里使用(但如果你集群环境缺少对应 jar,也需要通过 Python dependency management 方式携带)。

2. 为什么用 FileSource + TextLineInputFormat

TextLineInputFormat 解决两件事:

  • 按行切分:每行一个 record
  • 字符集解码:使用InputStreamReader支持多种 charset(UTF-8、GBK 等)

而 FileSource 解决两件事:

  • bounded:一次性读完目录/文件(批处理)
  • continuous:持续监控目录,新文件出现就继续读(流式文件输入)

也就是说,你可以用同一套 Source,覆盖两类场景:

  • 离线回放历史日志
  • 实时消费不断落盘的新日志文件

3. 批处理模式(Bounded):读完就结束

目标:把一个文本文件(或目录里所有文本文件)的每一行读成String,生成DataStream<String>

因为文本行一般不自带事件时间,所以不需要 watermark:

finalFileSource<String>source=FileSource.forRecordStreamFormat(newTextLineInputFormat(),/* Flink Path */).build();finalDataStream<String>stream=env.fromSource(source,WatermarkStrategy.noWatermarks(),"file-source");

适用场景:

  • 跑一次把历史文件处理完(ETL、离线修数、回放)

4. 流处理模式(Continuous):持续监控目录,新文件不断加入

目标:目录持续落文件(例如按小时切日志),Flink 任务一直跑,新文件出现就读,DataStream 会“无限增长”。

通过monitorContinuously(Duration)开启目录监控,比如每 1 秒扫描一次:

finalFileSource<String>source=FileSource.forRecordStreamFormat(newTextLineInputFormat(),/* Flink Path */).monitorContinuously(Duration.ofSeconds(1L)).build();finalDataStream<String>stream=env.fromSource(source,WatermarkStrategy.noWatermarks(),"file-source");

适用场景:

  • 应用日志落盘目录(log rolling)
  • 上游系统定时导出文件到目录
  • 简易的“文件流”采集管道(没有 Kafka 也能跑)

5. 生产建议:文本文件“流式监控”最容易踩的坑

5.1 只监控“新文件”,不等于“追尾追加写”

大多数文件监控模式更适合“文件落地后不再变”(写完再 rename/commit)。如果你希望读一个不断追加的单文件(类似tail -f),要非常谨慎:有些文件系统/写入方式会导致重复读或读到半行。

推荐的落地方式:

  • 上游写临时文件(.tmp),写完后rename 成正式文件名
  • Flink 只消费正式文件名规则(例如不匹配.tmp

5.2 监控频率不是越小越好

monitorContinuously(1s)会频繁扫描目录:

  • 目录文件数大时会产生明显压力
  • 对对象存储(S3/OSS)类系统,list 成本更高

经验:

  • 本地/小目录:1s~5s 可以
  • 大目录/对象存储:10s~60s 起步,并控制目录分区层级(按日期/小时分层)

5.3 字符集与脏数据治理要提前考虑

TextLineInputFormat 基于InputStreamReader解码,编码不一致会出现乱码或异常。建议:

  • 统一上游编码(最好 UTF-8)
  • 对异常行做侧输出(side output)或打到 DLQ(如果你后续接 Kafka)

5.4 文本行没有事件时间时,watermark 怎么办

如果你的行里其实包含时间戳(比如日志行开头有2026-01-15 12:34:56),你可以在 map/flatMap 里解析事件时间,再配置 watermark 策略;否则默认 noWatermarks 没问题。

6. 一句话总结

  • TextLineInputFormat:把文件按“行”读成String,并处理字符集解码
  • FileSource:同一套代码支持批(bounded)与流(continuous 目录监控)
  • 批:.build()直接读完结束
  • 流:.monitorContinuously(Duration)目录新文件持续进入

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

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

相关文章

【好写作AI】文科论文“救心丸”:当海量文献与复杂理论让你头秃时

好写作AI官方网址&#xff1a;https://www.haoxiezuo.cn/一、文科论文现场&#xff0c;你是否正在“精神内耗”&#xff1f;面对知网搜出的2873篇文献&#xff0c;感觉不是在写论文&#xff0c;是在给文献们“编制家谱”。想引用福柯的“规训”&#xff0c;却总觉得自己用得像个…

SkyWalking 入门实战:Spring Boot 应用性能监控从0到1

视频看了几百小时还迷糊&#xff1f;关注我&#xff0c;几分钟让你秒懂&#xff01; 一、为什么我们需要 SkyWalking&#xff1f; 在微服务架构越来越普及的今天&#xff0c;一个简单的业务请求可能要经过多个服务之间的调用。一旦系统出现性能瓶颈或异常&#xff0c;排查起来…

【好写作AI】理工男/女的救星:把难产的数据报告,变成流畅的学术语言

好写作AI官方网址&#xff1a;https://www.haoxiezuo.cn/一、实验室里的你&#xff0c;是否正在经历“表达型人格分裂”&#xff1f;跑仿真、做实验时&#xff1a;逻辑清晰&#xff0c;人机合一&#xff0c;如同学术界的“王牌操作员”。打开Word写论文时&#xff1a;瞬间词穷&…

厄达替尼Erdafitinib治疗FGFR突变尿路上皮癌的客观缓解率与耐药机制研究

厄达替尼作为一种针对FGFR&#xff08;成纤维细胞生长因子受体&#xff09;突变的靶向治疗药物&#xff0c;在尿路上皮癌的治疗领域展现出重要价值。多项权威研究对其治疗FGFR突变尿路上皮癌的客观缓解率及耐药机制进行了深入探索&#xff0c;为临床应用提供了关键依据。在客观…

Spring Boot 中各种 Bean 注入方式的优缺点详解(附实战代码)

视频看了几百小时还迷糊&#xff1f;关注我&#xff0c;几分钟让你秒懂&#xff01;在 Spring Boot 开发中&#xff0c;依赖注入&#xff08;Dependency Injection, DI&#xff09; 是最核心的概念之一。它帮助我们解耦组件、提高可测试性和维护性。但很多初学者面对 Autowired…

Jackson 1.x到2.x的演进与Spring集成

Jackson 从 1.x 到 2.x 的演进&#xff0c;不仅是一次技术升级&#xff0c;更深刻影响了 Spring 生态&#xff08;尤其是 Spring MVC 和 Spring Boot&#xff09;的 JSON 处理方式。下面从 Jackson 自身差异、Spring 对 Jackson 的集成变迁、实际开发中的迁移注意事项 三个维度…

【好写作AI】商科生的“战略外脑”:让你的案例分析,从课后作业变咨询报告

好写作AI官方网址&#xff1a;https://www.haoxiezuo.cn/一、打开一份50页的企业案例&#xff0c;你是否感觉像在“荒野求生”&#xff1f;信息过载&#xff1a;财报、新闻、行业报告…信息像乱箭齐发&#xff0c;不知该接哪支。模型选择困难症&#xff1a;用SWOT、PEST还是波特…

Jackson 1.x核心用法与Spring 3.x集成

一、Jackson 1.x 核心使用方式 1. 基本依赖&#xff08;Maven&#xff09; <dependency><groupId>org.codehaus.jackson</groupId><artifactId>jackson-core-asl</artifactId><version>1.9.13</version> </dependency> <de…

【好写作AI】法学“准律师”的智能卷宗:让AI帮你搞定引用与检索的脏活累活

好写作AI官方网址&#xff1a;https://www.haoxiezuo.cn/一、写法学论文的你&#xff0c;是否感觉自己像个“人形法律数据库”&#xff1f;为了一个脚注&#xff0c;在《民法典》的1260条里 “大海捞针” &#xff0c;最后发现引用的还是旧司法解释。裁判文书网一搜“高空抛物”…

leetcode 869. Reordered Power of 2 重新排序得到 2 的幂-耗时100

Problem: 869. Reordered Power of 2 重新排序得到 2 的幂 解题过程 耗时100%&#xff0c;2的幂个数有限&#xff0c;所以只需要枚举&#xff0c;统计每个2的幂的数字频次&#xff0c;以及n的数字频次&#xff0c;比较是否存在2的幂的频次和n的频次相同即可 首先求出2的幂&…

RNA-seq数据分析实战 | 2026年第2期,开启你的生信学习之旅

完成本门课程&#xff0c;学员无需写代码&#xff0c;即可完全基于 Galaxy 生信云平台进行 RNA-seq 数据分析&#xff0c;包括上游表达量矩阵的获得和下游发表级统计图表制作。随着测序技术的飞速发展&#xff0c;RNA-seq 已经成为生物医学研究的常规手段&#xff0c; 掌握 RNA…

AI实战篇:RAG评估从0到1落地,让你的检索增强生成系统能量化、能优化

我们是不是都踩过同一个坑&#xff1a;花数周搭建的RAG系统&#xff0c;上线后用户反馈“答非所问”“信息造假”&#xff1b;调整了chunk大小、换了向量模型&#xff0c;却说不清效果提升了多少&#xff1b;生产环境幻觉率忽高忽低&#xff0c;却找不到问题根源。这些问题的关…

从单细胞测序到人群大数据:一文读懂如何利用scRNA-seq与UK Biobank挖掘临床靶点

你是否思考过&#xff0c;在那些错综复杂的肠道神经丛里&#xff0c;胶质细胞真的只是维持结构的“配角”吗&#xff1f;过去我们总把它们看作一类整齐划一的辅助细胞&#xff0c;但最新的研究却打破了这种固有印象。2026年1月8日Neuron杂志发表了由Meenakshi Rao团队完成的研究…

【好写作AI】从“开挂”到“自强”:把AI变成你的私人学术健身教练

好写作AI官方网址&#xff1a;https://www.haoxiezuo.cn/一、两个平行宇宙&#xff1a;用同款AI&#xff0c;结不同果宇宙A&#xff08;摆烂版&#xff09;&#xff1a;小张把题目丢给AI&#xff0c;得到一篇流畅论文。答辩时&#xff0c;导师问&#xff1a;“请问你这里用的XX…

跟我学C++中统篇—STL中的bind

一、标准库中的函数绑定 对C11标准比较熟悉的都知道&#xff0c;标准库中提供了一个函数模板std::bind&#xff0c;用于将可调用对象&#xff08;函数&#xff0c;仿函数、函数指针、lambda表达式及函数对象等&#xff09;与一组参数绑定&#xff0c;然后形成一个新的可调用对象…

【好写作AI】别吵了!用AI写的论文,到底算谁的?一个灵魂拷问的终极回答

好写作AI官方网址&#xff1a;https://www.haoxiezuo.cn/一、当答辩委员扶了扶眼镜&#xff0c;问出那个致命问题… “同学&#xff0c;听说你这篇论文用了AI辅助&#xff0c;那么我想问&#xff1a;哪些部分是你的&#xff0c;哪些部分是机器的&#xff1f;”空气突然安静。这…

雷池WAF安装

干净的Ubuntu Server 24 # 下载并运行官方安装脚本 bash -c "$(curl -fsSLk https://waf-ce.chaitin.cn/release/latest/manager.sh)"安装后&#xff0c;可以通过frp暴露到公网上 参考&#xff1a; https://blog.csdn.net/lpfasd123/article/details/156835633 ht…

【好写作AI】毕业季“分身术”:用AI把一天48小时的魔法变成现实

好写作AI官方网址&#xff1a;https://www.haoxiezuo.cn/一、毕业季的你&#xff0c;是否在扮演“时间扭曲者”&#xff1f;早上&#xff1a;修改论文第8稿&#xff0c;发现文献引用格式全乱。下午&#xff1a;奔赴一场重要的实习面试&#xff0c;路上还在背自我介绍。晚上&…

拥抱大模型:深入剖析 ReAct 的核心原理、技术架构及其对 AI 领域的深远影响

在人工智能的演进历程中&#xff0c;大语言模型展现出了令人惊叹的文本生成能力&#xff0c;但其“黑箱”特性也带来了显著挑战——模型经常产生看似合理但实际错误的“幻觉”回答&#xff0c;缺乏透明推理过程&#xff0c;且无法与外部世界交互获取实时信息。ReAct&#xff08…

5 款 AI 写论文哪个好?实测横评!虎贲等考 AI 凭硬核实力 C 位胜出

毕业季来临&#xff0c;“AI 写论文工具怎么选” 的提问刷爆学术社群。市面上的论文 AI 五花八门&#xff0c;但真正能兼顾学术严谨性、数据真实性、全流程适配性的工具却寥寥无几。作为深耕论文写作科普的测评博主&#xff0c;我耗时一周&#xff0c;对虎贲等考 AI、掌桥科研 …