如何在 PySpark 作业中检索 Dataproc 的 jobId

Fra*_*ank 2 google-cloud-dataproc

我运行了几个批处理作业,我想将 dataproc 中的 jobId 引用到保存的输出文件。

这将允许拥有与结果相关联的所有参数和输出日志。缺点仍然存在:由于 YARN 中的 executors 过去,无法再获得单个 executor 的日志。

Fra*_*ank 7

Google dataproc 的上下文通过使用标签传递到 Spark 作业中。因此,所有合适的信息都存在于 SparkConfig 中,并且可以访问:

pyspark.SparkConf().get("spark.yarn.application.tags", "unknown")
pyspark.SparkConf().get("spark.yarn.tags", "unknown")
Run Code Online (Sandbox Code Playgroud)

输出如下所示:

dataproc_job_3f4025a0-bce1-a254-9ddc-518a4d8b2f3d
Run Code Online (Sandbox Code Playgroud)

然后可以将该信息分配给我们的导出文件夹,并使用 Dataproc 引用保存输出:

df.select("*").write. \
    format('com.databricks.spark.csv').options(header='true') \
    .save(export_folder)
Run Code Online (Sandbox Code Playgroud)