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)
我是否以正确的方式检索房产?
您可以使用
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本身中列出.
在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)