📜  临时视图 \ (1)

📅  最后修改于: 2023-12-03 14:48:54.562000             🧑  作者: Mango

临时视图

简介

临时视图(Temporary View),顾名思义是一种临时性的视图,生命周期仅为当前SparkSession,也就是说只存在于当前的SparkSession中。它们是基于DataFrame或者Dataset创建的一种视图,可以理解为是对于DataFrame或者Dataset的一种封装。

创建方式

创建临时视图有两种方式:

  1. 通过DataFrame/Dataset创建

创建临时视图需要先通过DataFrame或者Dataset注册成表,然后再根据表名创建对应的视图。

// 创建DataFrame
val df = Seq((1, "张三"), (2, "李四"), (3, "王五")).toDF("id", "name")

// 注册为表
df.createOrReplaceTempView("people")

// 创建临时视图
val tempView = spark.table("people")
  1. 直接创建

通过将DataFrame或者Dataset转化为一个Spark SQL查询,然后将该查询与一个名称(视图名称)进行绑定来直接创建临时视图。

// 创建DataFrame
val df = Seq((1, "张三"), (2, "李四"), (3, "王五")).toDF("id", "name")

// 创建临时视图
df.createOrReplaceTempView("people")
使用方式

创建了临时视图之后,我们可以在Spark SQL中使用该视图来进行查询,示例代码如下:

// 创建DataFrame
val df = Seq((1, "张三"), (2, "李四"), (3, "王五")).toDF("id", "name")

// 创建临时视图
df.createOrReplaceTempView("people")

// 查询
val result = spark.sql("select * from people where id = 1")
result.show()
注意事项
  • 临时视图的生命周期仅为当前SparkSession,不随着程序结束而存储到磁盘中。
  • 在同一个SparkSession中不能存在同名的临时视图。
  • Spark SQL的查询是大小写不敏感的,但是临时视图名称是大小写敏感的。
总结

临时视图是Spark SQL中一个重要的概念,通过临时视图我们可以将DataFrame/Dataset转化为表,方便我们在Spark SQL中进行各种数据操作。同时,由于它是临时性的,也不需要存储到磁盘中,因此对于一些对数据存储要求不高的场景可以采用临时视图来替代常规的表方式。