我正在尝试使用以下语句使用Spark中的Scala中注册DataFrame作为全局临时视图:
df.createGlobalTempView("people")
它没有在DataFrame
对象上识别createGlobalTempView
。
它显示错误:
value createglobaltempview不是 org.apache.spark.sql.dataframe。
我是否缺少任何库导入?
createGlobalTempView
在当前稳定版本(SPARK 2.0)中不存在。它已在尚未发布的2.1.0中添加。
全局临时视图
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(最新)版本的一部分。
全局临时视图是下一个版本的一部分