SparkSession的临时表分为两种
- 全局临时表:作用于某个Spark应用程序的所有SparkSession会话
- 局部临时表:作用于某个特定的SparkSession会话
如果同一个应用中不同的session需要重用一个临时表,那么不妨将该临时表注册为全局临时表,可以避免多余的IO,提高系统的执行效率,但是如果只是在某个session中使用,只需要注册局部临时表,可以避免不必要的内存占用
package sparksql
import org.apache.spark.sql.SparkSession
object SparkSqltest1 {
def main(args: Array[String]): Unit = {
//创建sparksession
val sparkSession=SparkSession.builder().appName("test1").master("local[*]")getOrCreate()
import sparkSession.implicits._
//读取文件形成dataframe
val df=sparkSession.read.json("hdfs://192.168.1.181:9000/json/data.json")
val temp=df.createTempView("temp_person") //局部变量表
sparkSession.sql("select * from temp_person").show()
val glob=df.createGlobalTempView("glob_person") //全局变量表
sparkSession.sql("select * from glob_person").show()
sparkSession.newSession().sql("select * from glob_person").show() //使用newSession()创建一个新的session
sparkSession.stop()
}
}
运行的结果为:
+---+--------+
|age| name|
+---+--------+
| 1|zhangsan|
| 2| lisi|
+---+--------+
+---+--------+
|age| name|
+---+--------+
| 1|zhangsan|
| 2| lisi|
+---+--------++
|age| name|
+---+--------+
| 1|zhangsan|
| 2| lisi|
+---+--------+
版权声明:本文为m0_37719047原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。