二百零一、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中出现运行结果

运行成功,没有报错!

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

相关推荐
商业模式源码开发1 天前
实体门店低获客成本增长案例:3 人转介绍模型 + 消费返还机制落地分析
大数据·商业模式·私域流量
元拓数智1 天前
智能分析落地卡壳?先补好「数据关系+语义治理」这层技术基建
大数据·分布式·ai·spark·数据关系·语义治理
TDengine (老段)1 天前
TDengine Tag 设计哲学与 Schema 变更机制
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
sxgzzn1 天前
新能源场站数智化转型:基于数字孪生与AI的智慧运维管理平台解析
大数据·运维·人工智能
清平乐的技术专栏1 天前
【Flink学习】(二)Flink 本地环境搭建,运行第一个入门程序
大数据·flink
这是程序猿1 天前
Spring Boot自动配置详解
java·大数据·前端
ws2019071 天前
AUTO TECH China 2026广州汽车零部件展:从整机集成迈向核心部件的产业跃升
大数据·人工智能·科技·汽车
humors2212 天前
从数据到决策:汽车使用成本的精细计算指南
大数据·程序人生
大大大大晴天2 天前
Flink技术实践:RocksDB 状态后端技术解密
大数据·flink
189228048612 天前
NY382固态MT29F32T08GSLBHL8-24QM:B
大数据·服务器·人工智能·科技·缓存