Dataproc Serverless Spark中SparkSession设置的appName未显示在控制台属性
问题描述
我正在使用Dataproc Serverless for Spark运行PySpark应用,配置代码如下:
spark = ( pyspark.sql.SparkSession.builder.appName("app_name") .config("spark.logConf", "true") .config("spark.sql.broadcastTimeout", broadcast_timeout) .config("spark.jars.packages", "io.delta:delta-core_2.12:0.8.0") .config("spark.ui.showConsoleProgress", progress_bar) .getOrCreate() )
但设置的appName未在Dataproc批处理作业控制台中体现:在Dataproc→批处理→点击作业ID→详情页→属性中,spark:spark.app.name显示为随机ID,请问该如何解决此问题?
解决方法
Dataproc Serverless for Spark的作业名称(对应控制台spark:spark.app.name)不能通过代码里的SparkSession.builder.appName()设置,因为Serverless环境会在Spark应用初始化前就生成作业标识,代码里的设置会被覆盖。
你需要在提交Dataproc批处理作业时,通过以下方式指定应用名称:
- gcloud命令行提交:添加
--properties spark.app.name=你的应用名称参数gcloud dataproc batches submit pyspark gs://你的存储桶路径/脚本.py \ --region=你的区域 \ --properties spark.app.name=app_name \ --其他参数 - Cloud Console(控制台)提交:在创建批处理作业的页面,找到「Spark属性」部分,添加键为
spark.app.name、值为你想要的名称的属性
代码里的appName()设置只会影响Spark应用内部的标识,不会同步到Dataproc控制台的作业属性中,所以必须通过作业提交阶段的配置来指定。
内容的提问来源于stack exchange,提问作者Tom J Muthirenthi
相关产品推荐
相关产品推荐

