我在控制台,yarn; client-mode中使用了$ {SPARK_HOME} / bin / pyspark,但是当我在yarn; client-中使用$ {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)
答案 0 :(得分:1)
从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控制台,创建的上下文支持hive。在spark-submit中,我们使用builder.enableHiveSupport()启用hive,该设置将spark.sql.catalogImplementation = Hive设置为默认[在内存中]。 有关更多详细信息,请查看下面的链接,
https://databricks.com/blog/2016/08/15/how-to-use-sparksession-in-apache-spark-2-0.html https://jaceklaskowski.gitbooks.io/mastering-spark-sql/spark-sql-StaticSQLConf.html
感谢@Jacek Laskowski
答案 1 :(得分:0)
我不确定为什么两个人的行为都不同,所以我所做的是 为了从spark-submit和pyspark获取sc._conf.getAll(),我发现Spark-submit的问题是spark.sql.warehouse.dir,spark.sql.catalogImplementation。但是,就像@Suresh所建议的那样,可能是由于我如何定义sqlContext。