我们有使用Spark结构化流实现的流应用程序。它将尝试从kafka主题中读取数据并将其写入HDFS位置。
有时应用程序无法给出错误:
_spark_metadata/0 doesn't exist while compacting batch 9
java.lang.IllegalStateException: history/1523305060336/_spark_metadata/9.compact doesn't exist when compacting batch 19 (compactInterval: 10)
Run Code Online (Sandbox Code Playgroud)
无法解决此问题。
我发现的唯一解决方案是删除检查点位置文件,如果再次运行该应用程序,它将从头开始读取主题/数据,这对于生产应用程序而言不是可行的解决方案。
谁能告诉这个错误的解决方案,所以我不必删除检查点,并且我可以从上次运行失败的地方继续。
删除检查点位置,它将从头开始启动应用程序并读取所有先前的数据。
应用程序示例代码:
spark.
readStream.
format("kafka")
.option("kafka.bootstrap.servers", <server list>)
.option("subscribe", <topic>)
.load()
spark.
writeStream.
format("csv").
option("format", "append").
option("path",hdfsPath).
option("checkpointlocation","")
.outputmode(append).start
Run Code Online (Sandbox Code Playgroud)
需要解决方案而不删除检查指示位置