createOrReplaceTempView:给df起了一个名,可以调用
val df: DataFrame = spark.read.json("D:/JulyMounth/spark/sparkData/zipcode.json")
//局部临时表注册
// 创建它的SparkSession对象终止前有效
df.createOrReplaceTempView("message")
val sql="select *from message"
spark.sql(sql).show()createOrReplaceGlobalTempView:
//全局临时表
// spark应用程序终止前有效
df.createOrReplaceGlobalTempView("message")
val sql1="select * from global_temp.message "
spark.sql(sql1).show()SparkSession的临时表分为两种
- 全局临时表:作用于某个Spark应用程序的所有SparkSession会话
- 局部临时表:作用于某个特定的SparkSession会话如果同一个应用中不同的session需要重用一个临时表,那么不妨将该临时表
注册为全局临时表,可以避免多余的IO,提高系统的执行效率,但是如果只是在某个session中使用,只需要注册局部临时表,可以避免不必要的内存占用
idea上代码实现:
package day10
import org.apache.log4j.{Level, Logger}
import org.apache.spark.sql.{DataFrame, SparkSession}
import org.apache.spark.{SparkConf, SparkContext}
object Sparksql_test1 {
def main(args: Array[String]): Unit = {
//控制日志输出
Logger.getLogger("org").setLevel(Level.ERROR)
val conf: SparkConf = new SparkConf().setAppName(this.getClass.getSimpleName).setMaster("local[2]")
val spark = SparkSession.builder().config(conf).getOrCreate()
val df: DataFrame = spark.read.json("D:/JulyMounth/spark/sparkData/zipcode.json")
// df.show()
// df.printSchema()
//全局注册表
df.createOrReplaceGlobalTempView("message")
val sql1="select * from global_temp.message "
spark.sql(sql1).show()
//注册临时表
df.createOrReplaceTempView("message")
val sql="select * from message "
spark.sql(sql).show()
}
}
版权声明:本文为XIAOMO__原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。