二百零一、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 小时前
【Tech Arch】Hive技术解析:大数据仓库的SQL桥梁
大数据·数据仓库·hive·hadoop·sql·apache
SelectDB2 小时前
5000+ 中大型企业首选的 Doris,在稳定性的提升上究竟花了多大的功夫?
大数据·数据库·apache
最初的↘那颗心2 小时前
Flink Stream API 源码走读 - window 和 sum
大数据·hadoop·flink·源码·实时计算·窗口函数
Yusei_05234 小时前
迅速掌握Git通用指令
大数据·git·elasticsearch
一只栖枝10 小时前
华为 HCIE 大数据认证中 Linux 命令行的运用及价值
大数据·linux·运维·华为·华为认证·hcie·it
喂完待续14 小时前
Apache Hudi:数据湖的实时革命
大数据·数据仓库·分布式·架构·apache·数据库架构
青云交14 小时前
Java 大视界 -- 基于 Java 的大数据可视化在城市交通拥堵治理与出行效率提升中的应用(398)
java·大数据·flink·大数据可视化·拥堵预测·城市交通治理·实时热力图
还是大剑师兰特20 小时前
Flink面试题及详细答案100道(1-20)- 基础概念与架构
大数据·flink·大剑师·flink面试题
sleetdream1 天前
Flink Sql 按分钟或日期统计数据量
sql·flink
189228048611 天前
NY243NY253美光固态闪存NY257NY260
大数据·网络·人工智能·缓存