【问题标题】:Value createGlobalTempView is not a member of apache.org.spark.sql.DataFrame值 createGlobalTempView 不是 apache.org.spark.sql.DataFrame 的成员
【发布时间】:2016-12-15 20:06:24
【问题描述】:
我正在尝试在 Spark 中使用以下语句将 DataFrame 注册为全局临时视图:
df.createGlobalTempView("people")
它无法识别DataFrame 对象上的createGlobalTempView。
显示错误:
value createGlobalTempView 不是
org.apache.spark.sql.DataFrame.
我是否缺少任何库导入?
【问题讨论】:
标签:
apache-spark
apache-spark-sql
spark-dataframe
【解决方案1】:
createGlobalTempView 在当前稳定版本 (Spark 2.0) 中不存在。 2.1.0 中添加,尚未发布。
【解决方案2】:
Global Temporary View
Spark SQL 中的临时视图是session-scoped,如果创建它的会话终止,它们就会消失。
如果您希望在所有会话之间共享一个临时视图并保持活动状态直到 Spark 应用程序终止,您可以创建一个全局临时视图。全局临时视图绑定到系统保留的数据库 global_temp,我们必须使用限定名称来引用它,例如从 global_temp.view1 中选择 *。
// Register the DataFrame as a global temporary view
df.createGlobalTempView("people")
// Global temporary view is tied to a system preserved database `global_temp`
spark.sql("SELECT * FROM global_temp.people").show()
// +----+-------+
// | age| name|
// +----+-------+
// |null|Michael|
// | 30| Andy|
// | 19| Justin|
// +----+-------+
// Global temporary view is cross-session
spark.newSession().sql("SELECT * FROM global_temp.people").show()
// +----+-------+
// | age| name|
// +----+-------+
// |null|Michael|
// | 30| Andy|
// | 19| Justin|
// +----+-------+
全局临时视图不是 Spark 2.0.2(最新)版本的一部分。
全局临时视图是下一个release的一部分