PySpark中使用spark.conf.set配置属性的正确语法咨询
针对你提到的spark.sql.adaptive.optimizeSkewsInRebalancePartitions.enabled配置项,四种写法的正确性如下:
写法1:
spark.conf.set("spark.sql.adaptive.optimizeSkewsInRebalancePartitions.enabled", "true")
完全正确。spark.conf.set接受字符串类型的布尔值,Spark内部会自动解析为布尔类型,这是跨版本兼容的稳妥写法。写法2:
spark.conf.set("spark.sql.adaptive.optimizeSkewsInRebalancePartitions.enabled", True)
同样正确。PySpark支持直接传递Python原生布尔值True/False,底层会自动转换为对应标识,功能和写法1一致。写法3:
spark.sql("set adaptive.optimizeSkewsInRebalancePartitions.enabled=true")
正确。使用SQLSET命令时可省略spark.sql前缀,Spark会自动补全;小写true是SQL标准布尔值写法,能被正确识别。写法4:
spark.sql("set adaptive.optimizeSkewsInRebalancePartitions.enabled=True")
同样正确。SQL对布尔值大小写不敏感,True和true都会被解析为布尔真,效果和写法3完全一致。
补充说明
- 使用
spark.conf.set时必须写全配置项完整名称(带spark.sql前缀);使用spark.sql("set ...")时可省略前缀,Spark会根据上下文自动匹配。 - 布尔值无论是传递Python原生类型还是字符串类型,只要值正确(
True/true或False/false),Spark都能正确解析,无功能差异,可按个人习惯选择。
内容的提问来源于stack exchange,提问作者J Learner

