所有(有效的内置(Spark属性的列表在哪里?
官方 Spark 文档中的可用属性列表不包括当前稳定版 Spark(截至 2020-01-22 的 2.4.4(的所有(有效的内置(属性。 一个例子是spark.sql.shuffle.partitions
,它默认为200
。 不幸的是,像这样的属性似乎无法通过sparkConf.getAll()
、sparkConf.toDebugString()
或sql.("SET -v")
中的任何一个访问。 相反,内置默认值似乎只能通过显式名称(即sparkConf.get("foo")
(。 但是,这对我没有帮助,因为确切的属性名称必须已经知道,并且我需要调查我还不知道的属性以进行调试/优化/支持。
你可以使用。
sql("SET -v"(.show(500,false(
这将为您提供一个近乎完整的列表,不包括内部属性。
+-----------------------------------------------------------------+-------------------------------------------------+
|key |value |
+-----------------------------------------------------------------+-------------------------------------------------+
|spark.sql.adaptive.enabled |false |
|spark.sql.adaptive.shuffle.targetPostShuffleInputSize |67108864b |
|spark.sql.autoBroadcastJoinThreshold |10485760 |
|spark.sql.avro.compression.codec |snappy |
|spark.sql.avro.deflate.level |-1 |
...
编辑:
我会提到 Spark 有许多烘焙的默认值,这些默认值可能不会显示为配置属性。 我建议看看源代码中的SQLConf类。 不幸的是,由于 Spark 的复杂性及其几乎无数的配置,并非所有配置都在 SQLConf 中,有些配置分散在整个代码中。 最近,有时 Spark 经常有多个相互覆盖的配置,这也只能通过源代码推断出来。
https://github.com/apache/spark/blob/master/sql/catalyst/src/main/scala/org/apache/spark/sql/internal/SQLConf.scala
我不认为这是完整的答案,但它可以提供帮助。它将显示比您的替代方案更多的属性。至少会显示由某种中间件修改的选项,例如 Livy。
设置此参数:
spark.logConf=true
现在,您的所有会话配置都将保存在 INFO 级别的纱线日志中。执行yarn logs -applicattionID <your app id>
并搜索spark.app.name=
以查找会话属性。
另一个问题是您将在执行作业后立即看到属性值。