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