二百零一、Flink——Flink配置状态后端运行后报错:Can not create a Path from an empty string

一、目的

尚硅谷学习用Flink配置状态后端的项目中,运行报错Exception in thread "main" java.lang.IllegalArgumentException: Can not create a Path from an empty string

二、Flink的状态后端(state backend)类型

(一)MemoryStateBackend

复制代码
1、内存级的状态后端,会将键控状态作为内存中的对象进行管理,将它们存储在TaskManager的JVM堆上;2、而将 checkpoint 存储在 JobManager 的内存中。

(二)FsStateBackend

复制代码
1、将checkpoint 存到远程的持久化文件系统(FileSystem)上。
2、而对于本地状态,跟 MemoryStateBackend 一样,也会存在 TaskManager 的 JVM 堆上。

(三)RocksDBStateBackend

复制代码
1、将所有状态序列化后,存入本地的 RocksDB 中存储。
2、注意:RocksDB 的支持并不直接包含在 flink 中,需要引入依赖

三、报错详情

Exception in thread "main" java.lang.IllegalArgumentException: Can not create a Path from an empty string

at org.apache.flink.core.fs.Path.checkAndTrimPathArg(Path.java:168)

at org.apache.flink.core.fs.Path.<init>(Path.java:181)

at org.apache.flink.runtime.state.filesystem.FsStateBackend.<init>(FsStateBackend.java:140)

at cn.kgc.apitest.state.StateTest4_FaultTolerance.main(StateTest4_FaultTolerance.java:31)

四、报错原因

经查,无法从空字符串创建路径是因为状态后端配置的尚硅谷代码里

FsStateBackend和RocksDBStateBackend的参数为空,所以无法通过checkpoint

(一)尚硅谷代码

(二)本地代码

五、解决措施

(一)注释掉这两行代码

复制代码
//     env.setStateBackend( new FsStateBackend(""));
//     env.setStateBackend( new RocksDBStateBackend(""));

(二)改好后运行项目

1、先运行IDEA项目

2、然后在XShell中输入数据

3、在IDEA中出现运行结果

运行成功,没有报错!

又解决了一个问题,日清日高!

相关推荐
宸津-代码粉碎机4 小时前
AI攻防战升级!基于Spring AI构建Java应用自动免疫安全体系
java·大数据·开发语言·人工智能·python·安全·spring
博、、5 小时前
从零构建智慧场馆解决方案:架构设计与开发实践
大数据·运维
AI行业说5 小时前
誉财自动化YC-18-M8045实测:服装自动化vs人工缝制产能成本对比
大数据·人工智能·自动化·智能模板机
2601_963749105 小时前
越华环保集团数字化污水治理:端边云采集架构与平台对接实现
java·大数据·架构
爱吃火鸡面呀6 小时前
MySQL DQL 子查询详解:从标量、列、行到表子查询的完整实战
大数据·数据库·mysql
AI科技先锋报6 小时前
AI数据资产管理平台全景洞察:从治理基座到智能体应用
大数据·人工智能
华奥系科技8 小时前
银发经济浪潮下,智慧养老该如何落地生根
大数据·人工智能
百胜软件@百胜软件8 小时前
百胜软件入选“828精选AI解决方案图谱”,胜券AI助力零售品牌构建专属智能体
大数据·人工智能·零售
大大大大晴天8 小时前
把湖仓一体放进 K8s:Iceberg、Hudi、Paimon 如何重塑云原生大数据架构
大数据
阿里云大数据AI技术9 小时前
从“找得到”到“找得准”:用 Hologres 构建智能达人圈选系统
大数据·人工智能