Spark纱;客户端模式,sqlcontext.sql返回找不到数据库

n53p2ov0  于 2021-06-26  发布在  Hive
关注(0)|答案(2)|浏览(459)

我在console,yarn中使用了${spark\u home}/bin/pyspark;但是,当我在yarn中使用${spark\u 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)
ff29svar

ff29svar1#

在spark 2.0+中,我们可以使用sparksession来访问功能,而不是sparkcontext、sqlcontext和hivecontext(在2.0.0中已弃用)。http://spark.apache.org/docs/2.1.0/api/python/pyspark.sql.html#pyspark.sql.hivecontext
尝试使用sparksession和enablehivesupport从externalcatalog中选择配置单元,

from pyspark.sql import SparkSession
spark = SparkSession.builder.enableHiveSupport().getOrCreate()

使用pyspark控制台,创建的上下文是支持配置单元的。在spark submit中,我们使用builder.enablehivesupport()启用配置单元,后者设置spark.sql.catalogimplementation=hive[默认情况下,它在内存中]。有关详细信息,请查看以下链接,
https://databricks.com/blog/2016/08/15/how-to-use-sparksession-in-apache-spark-2-0.htmlhttpshttp://jaceklaskowski.gitbooks.io/mastering-spark-sql/spark-sql-staticsqlconf.html
感谢@jacek laskowski

aamkag61

aamkag612#

我不确定为什么它们的行为都不同,所以我所做的是从spark submit和pyspark获得sc.\u conf.getall(),我发现spark submit的错误是spark.sql.warehouse.dir,spark.sql.catalogimplementation。然而,正如@suresh所建议的,这可能是由于我如何定义sqlcontext的事实。

相关问题