apache-spark - 修复 spark 结构化流中的检查点

标签 apache-spark spark-structured-streaming

<分区>

当 spark 无法从 _spark_metadata 文件夹中找到文件时,我在生产中遇到检查点问题

18/05/04 16:59:55 INFO FileStreamSinkLog: Set the compact interval to 10 [defaultCompactInterval: 10]
18/05/04 16:59:55 INFO DelegatingS3FileSystem: Getting file status for 's3u://data-bucket-prod/data/internal/_spark_metadata/19.compact'
18/05/04 16:59:55 ERROR FileFormatWriter: Aborting job null.
java.lang.IllegalStateException: s3u://data-bucket-prod/data/internal/_spark_metadata/19.compact doesn't exist when compacting batch 29 (compactInterval: 10)

已经有一个question asked但暂时没有解决方案。

在检查点文件夹中,我看到批处理 29 尚未提交,所以我可以从检查点的 sourcesstate 和/或 offsets 中删除一些内容> 防止 spark 因缺少 _spark_metadata/19.compact 文件而失败?

最佳答案

问题是您将检查点存储到 S3。 S3 中的检查点并非 100% 可靠。要了解 S3 不可靠的确切原因,请阅读 this article .

方案一:使用HDFS存储检查点

解决方案 2:如果您想使用 Amazon Web Services,请使用 EFS。 The above article提供了设置 EFS 的所有详细步骤。

解决方案 3:使用 NFS

关于apache-spark - 修复 spark 结构化流中的检查点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50180725/

相关文章:

apache-spark - 如何在结构化流中为kafka数据源中的消费者组设置group.id?

sockets - 与套接字建立连接后,Spark 结构化流无法工作

apache-spark - 如何从套接字读取流数据集?

python - 根据列值是否在另一列中将列添加到 PySpark DataFrame

apache-spark - UserWarning : pyarrow. open_stream 已弃用,请使用 pyarrow.ipc.open_stream 警告

amazon-web-services - 尝试将数据帧写入文件,获取org.apache.spark.SparkException : Task failed while writing rows

java - Spark没有注册输出操作,所以没有什么可执行的,但我正在写入文件

java - 从多线程驱动程序启动 Apache Spark SQL 作业

apache-spark - Spark Streaming 在 java 中将 Dataset<Row> 转换为 Dataset<CustomObject>