在讲解 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 system
val 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 exists
val newSpark = spark.newSession
println("""newSpark.catalog.tableExists("foo") = """ + newSpark.catalog.tableExists("foo"))
//newSpark.catalog.tableExists("foo") = false //both session can access the logdata table
spark.sql("SELECT * FROM global_temp.logdata").show()
newSpark.sql("SELECT * FROM global_temp.logdata").show() spark.stop()
}
}

spark-sql createOrReplaceTempView 和createGlobalTempView区别的更多相关文章

  1. spark sql createOrReplaceTempView registerTempTable

    createOrReplaceTempView2.x版本以上. registerTempTable1.5.x val data1 = dataSelect1(sqlContext, sparkMode ...

  2. Spark SQL概念学习系列之DataFrame与RDD的区别

    不多说,直接上干货! DataFrame的推出,让Spark具备了处理大规模结构化数据的能力,不仅比原有的RDD转化方式更加简单易用,而且获得了更高的计算性能.Spark能够轻松实现从MySQL到Da ...

  3. spark.sql.shuffle.partitions和spark.default.parallelism的区别

    在关于spark任务并行度的设置中,有两个参数我们会经常遇到,spark.sql.shuffle.partitions 和 spark.default.parallelism, 那么这两个参数到底有什 ...

  4. Apache Spark 2.2.0 中文文档 - Spark SQL, DataFrames and Datasets Guide | ApacheCN

    Spark SQL, DataFrames and Datasets Guide Overview SQL Datasets and DataFrames 开始入门 起始点: SparkSession ...

  5. 大数据技术之_19_Spark学习_03_Spark SQL 应用解析 + Spark SQL 概述、解析 、数据源、实战 + 执行 Spark SQL 查询 + JDBC/ODBC 服务器

    第1章 Spark SQL 概述1.1 什么是 Spark SQL1.2 RDD vs DataFrames vs DataSet1.2.1 RDD1.2.2 DataFrame1.2.3 DataS ...

  6. Apache Spark 2.2.0 中文文档 - Spark SQL, DataFrames and Datasets

    Spark SQL, DataFrames and Datasets Guide Overview SQL Datasets and DataFrames 开始入门 起始点: SparkSession ...

  7. Spark TempView和GlobalTempView的区别

    Spark TempView和GlobalTempView的区别 TempView和GlobalTempView在spark的Dataframe中经常使用,两者的区别和应用场景有什么不同. 我们以下面 ...

  8. Spark SQL知识点大全与实战

    Spark SQL概述 1.什么是Spark SQL Spark SQL是Spark用于结构化数据(structured data)处理的Spark模块. 与基本的Spark RDD API不同,Sp ...

  9. Spark SQL知识点与实战

    Spark SQL概述 1.什么是Spark SQL Spark SQL是Spark用于结构化数据(structured data)处理的Spark模块. 与基本的Spark RDD API不同,Sp ...

随机推荐

  1. windows10自动更新好烦啊

    cmd下输入services.msc,找到windows update,把手动变成禁用. https://blog.csdn.net/hwzzyr/article/details/81190442 h ...

  2. ORM-Dapper:Dapper列表

    ylbtech-ORM-Dapper:Dapper列表 1.返回顶部 1.1. https://dapper-tutorial.net/ 1.2. 2.1. https://www.nuget.org ...

  3. android studio import cannot resolve symbol错误

    试了好多,都不行 经过查阅和测试,发现如果上文的解决方式不可以的话,可以使用另一种: 删除项目.idea目录下的libraries目录 重新启动Android Studio 感谢作者:https:// ...

  4. linux中export的作用

    设置环境变量. 为什么设置环境变量?---->全局使用. 不设置环境变量会怎么样?->只有当前shell中能够调用,其他的shell不能调用. 设置了之后呢?->全局都能调用.

  5. json 报错415 400

    JS操作JSON总结   $(function(){ $.ajax({ method: 'post', url: '/starMOOC/forum/getSectionList', dataType: ...

  6. Mysql DBA

    1 mysqldump: Error 2020: Got packet bigger than 'max_allowed_packet' bytes when dumping table `tb_co ...

  7. 引入scss(@import)和其中易错点

    1.引入文件方式 @import 'url'; ./ :当前目录 ../ :上级目录 src/api/styles: 绝对路径 2.一般在main.js中引用当做全局样式 import 'styles ...

  8. 拾遗:systemctl --user

    参考:https://wiki.gentoo.org/wiki/Systemd systemd 支持普通用户定义的 unit[s] 开机启动 systemctl --user enable/disab ...

  9. 【Java多线程系列五】列表类

    一些列表类及其特性  类 线程安全 Iterator 特性 说明 Vector 是 fail-fast 内部方法用synchronized修饰,因此执行效率较低 1. 线程安全的列表类并不意味着调用它 ...

  10. squirrel sql client 连接phoenix

    1. 下载 squirrel sql client 客户端后 运行 2.复制必要的jar 包到 squirrel sql client 安装目录下 需要jar 包有: phoenix-core-4.6 ...