欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

spark-sql createOrReplaceTempView 和createGlobalTempView区别

发布时间:2025/3/15 编程问答 48 豆豆
生活随笔 收集整理的这篇文章主要介绍了 spark-sql createOrReplaceTempView 和createGlobalTempView区别 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

 

在讲解 createOrReplaceTempView 和createGlobalTempView的区别前,先了解下Spark Application 和  Spark Session区别 

Spark Application 

Spark Application 使用:

  • 针对单个批处理作业
  • 多个job通过session交互式
  • 不断满足请求的,长期存在的server
  • 一个Spark job 可以包含多个map和reduce
  • Spark Application 可以包含多个session实例

Spark Session

SparkSession与Spark应用程序相关联:

  • session 是两个或更多实体之间的交互媒介
  • 在Spark 2.0中,你可以使用SparkSession创建
  • 可以在不创建SparkConf,SparkContext或SQLContext的情况下创建SparkSession(它们封装在SparkSession中)

createOrReplaceTempView使用

createOrReplaceTempView:创建临时视图,此视图的生命周期与用于创建此数据集的[SparkSession]相关联。

createGlobalTempView:创建全局临时视图,此时图的生命周期与Spark Application绑定。

df.createOrReplaceTempView("tempViewName") df.createGlobalTempView("tempViewName")

createOrReplaceTempView(): 创建或替换本地临时视图。

此视图的生命周期依赖于SparkSession类,如果想drop此视图可采用dropTempView删除

spark.catalog.dropTempView("tempViewName")

或者 stop() 来停掉 session

self.ss = SparkSession(sc) ... self.ss.stop()

createGlobalTempView使用

createGlobalTempView():创建全局临时视图。

这种视图的生命周期取决于spark application本身。如果想drop此视图可采用dropGlobalTempView删除

spark.catalog.dropGlobalTempView("tempViewName")

或者stop() 将停止

ss = SparkContext(conf=conf, ......) ... ss.stop()

注:Spark 2.1.0版本中引入了Global temporary views 。

当您希望在不同sessions 之间共享数据并保持活动直到application结束时,此功能非常有用。

为了说明createTempView和createGlobalTempView的用法,展现实例如下:

object NewSessionApp {def main(args: Array[String]): Unit = {val logFile = "data/README.md" // Should be some file on your systemval spark = SparkSession.builder.appName("Simple Application").master("local").getOrCreate()val logData = spark.read.textFile(logFile).cache()logData.createGlobalTempView("logdata")spark.range(1).createTempView("foo")// within the same session the foo table exists println("""spark.catalog.tableExists("foo") = """ + spark.catalog.tableExists("foo"))//spark.catalog.tableExists("foo") = true// for a new session the foo table does not existsval newSpark = spark.newSessionprintln("""newSpark.catalog.tableExists("foo") = """ + newSpark.catalog.tableExists("foo"))//newSpark.catalog.tableExists("foo") = false//both session can access the logdata tablespark.sql("SELECT * FROM global_temp.logdata").show()newSpark.sql("SELECT * FROM global_temp.logdata").show()spark.stop()} }

 

转载于:https://www.cnblogs.com/yyy-blog/p/spark-sql.html

总结

以上是生活随笔为你收集整理的spark-sql createOrReplaceTempView 和createGlobalTempView区别的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。