如何在Spark中获取默认属性值

Raj*_*Raj 5 scala apache-spark apache-spark-sql

我正在使用这个版本的Spark : spark-1.4.0-bin-hadoop2.6. 我想检查几个默认属性.所以我在下面发表了以下声明spark-shell

scala> sqlContext.getConf("spark.sql.hive.metastore.version")
Run Code Online (Sandbox Code Playgroud)

我期待调用方法getConf返回0.13.1链接中描述的值.但我得到了以下例外

java.util.NoSuchElementException: spark.sql.hive.metastore.version
    at org.apache.spark.sql.SQLConf$$anonfun$getConf$1.apply(SQLConf.scala:283)
    at org.apache.spark.sql.SQLConf$$anonfun$getConf$1.apply(SQLConf.scala:283)
Run Code Online (Sandbox Code Playgroud)

我是否以正确的方式检索房产?

Jus*_*ony 6

您可以使用

sc.getConf.toDebugString
Run Code Online (Sandbox Code Playgroud)

要么

sqlContext.getAllConfs
Run Code Online (Sandbox Code Playgroud)

这将返回已设置的所有值,但是代码中有一些默认值.在您的具体示例中,它确实在代码中:

getConf(HIVE_METASTORE_VERSION, hiveExecutionVersion)
Run Code Online (Sandbox Code Playgroud)

其中默认值确实在代码中:

val hiveExecutionVersion: String = "0.13.1"
Run Code Online (Sandbox Code Playgroud)

因此,getConf将尝试从配置中拉出Metastore版本,然后回退到默认值,但这不会在conf本身中列出.


pra*_*nak 5

在Spark 2.xx如果我想知道Spark Conf的默认值,我会这样做:

下面的命令将返回spark-shell中的Scala Map.

spark.sqlContext.getAllConfs 
Run Code Online (Sandbox Code Playgroud)

要找到我们对conf属性的价值:

例如 - 要找到spark set使用的默认仓库目录conf - spark.sql.warehouse.dir:

spark.sqlContext.getAllConfs.get("spark.sql.warehouse.dir")
Run Code Online (Sandbox Code Playgroud)