Hive 火花线;客户端模式,SQLContext.sql返回未找到的数据库

Hive 火花线;客户端模式,SQLContext.sql返回未找到的数据库,hive,pyspark-sql,Hive,Pyspark Sql,我在控制台中使用了${SPARK_HOME}/bin/pyspark,纱线;但是,当我在Thread中使用${SPARK_HOME}/bin/SPARK submit时,sqlContext可以查询我的配置单元表;在客户端模式下,sqlContext找不到配置单元数据库 你知道我遗漏了哪些参数或文件吗 我是如何使用Spark 2.1.0定义sqlContext的: from pyspark import SparkConf, SparkContext from pyspark.sql impor

我在控制台中使用了${SPARK_HOME}/bin/pyspark,纱线;但是,当我在Thread中使用${SPARK_HOME}/bin/SPARK submit时,sqlContext可以查询我的配置单元表;在客户端模式下,sqlContext找不到配置单元数据库

你知道我遗漏了哪些参数或文件吗

我是如何使用Spark 2.1.0定义sqlContext的:

from pyspark import SparkConf, SparkContext
from pyspark.sql import SQLContext

conf = SparkConf()
sc = SparkContext(conf=conf)
sqlContext = SQLContext(sc)

我不确定为什么他们两人的行为都不一样,所以我所做的是
为了从spark submit和pyspark获取sc._conf.getAll(),我发现spark submit的错误是spark.sql.warehouse.dir、spark.sql.catalogImplementation。然而,正如@Suresh所建议的,这可能是因为我是如何定义sqlContext的。

从spark 2.0+开始,我们可以使用SparkSession来访问功能,而不是SparkContext、sqlContext和HiveContext(在2.0.0中不推荐使用)。

尝试使用SparkSession和enableHiveSupport从ExternalCatalog中选择配置单元

from pyspark.sql import SparkSession
spark = SparkSession.builder.enableHiveSupport().getOrCreate()
使用pyspark控制台,创建的上下文是支持配置单元的。在spark submit中,我们使用builder.enableHiveSupport()启用配置单元,它设置spark.sql.catalogImplementation=hive[默认情况下它位于内存中]。 有关更多详细信息,请查看以下链接


感谢@Jacek Laskowski

您使用哪种spark版本以及如何定义sqlContext?您可以尝试使用HiveContext而不是sqlContext。HiveContext也是如此。