Apache spark 如何为spark shell中的spark启用配置单元支持(spark 2.1.1)
我正在尝试为spark shell中的spark对象启用配置单元支持,但它不起作用。我用的是Hortonworks HDP。以下是我尝试启用配置单元支持时得到的结果:Apache spark 如何为spark shell中的spark启用配置单元支持(spark 2.1.1),apache-spark,hive,apache-spark-sql,hortonworks-data-platform,Apache Spark,Hive,Apache Spark Sql,Hortonworks Data Platform,我正在尝试为spark shell中的spark对象启用配置单元支持,但它不起作用。我用的是Hortonworks HDP。以下是我尝试启用配置单元支持时得到的结果: scala> val spark3 = SparkSession.builder.enableHiveSupport.getOrCreate 17/10/24 21:30:28 WARN SparkSession$Builder: Using an existing SparkSession; some configurat
scala> val spark3 = SparkSession.builder.enableHiveSupport.getOrCreate
17/10/24 21:30:28 WARN SparkSession$Builder: Using an existing SparkSession; some configuration may not take effect.
spark3: org.apache.spark.sql.SparkSession = org.apache.spark.sql.SparkSession@22f8be7c
scala> spark3.catalog
res3: org.apache.spark.sql.catalog.Catalog = org.apache.spark.sql.internal.CatalogImpl@49c13ecd
在HDP中,
sparkshell
已经使用配置单元支持创建了有效的SparkSession
您得到的警告是getOrCreate
使用了现有会话
你可以试试
spark.sql("show tables").show()
另外,您使用的是
spark
而不是spark3
,因此不清楚spark.catalog
将向您显示的是该对象的toString信息以外的其他内容。。。它起作用了。您是否尝试过spark.sql()
?对于代码,很抱歉,spark3.catalog显示的内容与spark.catalog相同。问题是spark.catalog显示的目录类型是org.apache.spark.sql.internal.cataloginpl。如果enableHiveSupport()有效,那么它应该显示org.apache.spark.sql.hive.HiveSessionCatalog。您有什么参考资料可以打印出HiveSessionCatalog
?该类根本不存在于该包中。我认为spark.sql()可以工作,因为SparkSession在内部实现了一个Hive版本;所以,我认为这就是spark.sql()、spark.catalog和类似的东西起作用的原因。。。不完全是。Spark Thrift服务器与Hive兼容。Spark使用的默认元存储是嵌入式Derby数据库。在HDP中,hive site.xml
被放置并从$SPARK\u HOME/conf
读取,在调用enablehavesupport
时读取,但上次我检查时,这已经在SPARK shell中完成