我在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)
2条答案
按热度按时间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中选择配置单元,
使用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
aamkag612#
我不确定为什么它们的行为都不同,所以我所做的是从spark submit和pyspark获得sc.\u conf.getall(),我发现spark submit的错误是spark.sql.warehouse.dir,spark.sql.catalogimplementation。然而,正如@suresh所建议的,这可能是由于我如何定义sqlcontext的事实。