【发布时间】:2018-03-05 10:32:46
【问题描述】:
试图了解如何使用 Spark 全局临时视图。
在一个 spark-shell 会话中,我创建了一个视图
spark = SparkSession.builder.appName('spark_sql').getOrCreate()
df = (
spark.read.option("header", "true")
.option("delimiter", ",")
.option("inferSchema", "true")
.csv("/user/root/data/cars.csv"))
df.createGlobalTempView("my_cars")
# works without any problem
spark.sql("SELECT * FROM global_temp.my_cars").show()
在另一个上,我尝试访问它,但没有成功(未找到表或视图)。
#second Spark Shell
spark = SparkSession.builder.appName('spark_sql').getOrCreate()
spark.sql("SELECT * FROM global_temp.my_cars").show()
这是我收到的错误:
pyspark.sql.utils.AnalysisException: u"Table or view not found: `global_temp`.`my_cars`; line 1 pos 14;\n'Project [*]\n+- 'UnresolvedRelation `global_temp`.`my_cars`\n"
我读到每个 spark-shell 都有自己的上下文,这就是为什么一个 spark-shell 看不到另一个的原因。所以我不明白,GTV有什么用,它在哪里有用?
谢谢
【问题讨论】:
-
您能分享一下您尝试访问视图的代码吗?
-
嗨,我在问题中添加了代码
-
它可能无关但可能会跳过
SparkSession初始化,因为它在您初始化spark-shell时已经初始化。既然您的代码看起来很合理,您是否还可以包含您收到的错误消息? -
我添加了错误信息。你能在你的机器上执行相同的代码吗(当然有不同的表)?
-
你能连接到 Hive 吗?如果是,请检查表 my_cars 是否存在。
标签: apache-spark apache-spark-sql pyspark-sql