Sparksql:Dataset注册表createOrReplaceGlobalTempView和createOrReplaceTempView区别

 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版权协议,转载请附上原文出处链接和本声明。