首先需要确认是否正确配置了 bookmark 和 enable metrics。如果配置正确,但仍然不起作用,可以尝试在 PySpark 代码的开头加入以下配置:
from pyspark.context import SparkContext
from pyspark.conf import SparkConf
from awsglue.context import GlueContext
sc = SparkContext.getOrCreate(conf=SparkConf().setAppName("app-name"))
glueContext = GlueContext(sc)
spark = glueContext.spark_session
spark.conf.set("spark.sql.sources.partitionOverwriteMode", "dynamic")
spark.conf.set("spark.sql.session.timeZone", "UTC")
spark.conf.set("spark.sql.streaming.metricsEnabled", "true")
spark.conf.set("spark.executor.extraJavaOptions", "-Dcom.amazonaws.services.glue.jobBookmark.interval=20")
其中 com.amazonaws.services.glue.jobBookmark.interval
参数的值表示 bookmark 的写入间隔,单位为秒。默认值是 60 秒。如果设置为 20 秒之类的较小值,则可以加快 bookmark 的写入速度,从而更快地更新作业的 bookmark 状态。