Spark——Spark缓存临时视图(View)

RDD/Dataset缓存复用

我们知道在使用RDD和Dataset API开发Spark应用程序的时候,如果要缓存某个RDD或Dataset来进行复用,减少重复计算提升计算效率的时候,我们可以在RDD或Dataset上调用persist()方法并传入缓存级别参数进行缓存。

val df: Dataset[Row] = ...
df.persist(StorageLevel.MEMORY_AND_DISK)

纯SQL结果缓存复用

但是当我们以纯SQL来开发Spark应用程序的时候,该如何缓存某段SQL产生的结果呢?

  1. 第一步,对要复用的SQL创建临时视图。这里需要注意两点
    • 临时视图生命周期:所创建的临时视图的生命周期是绑定在当前Spark应用程序上的,也就是说,当前Spark应用程序的任何地方都可以访问这个临时视图,应用程序停止之后,临时视图会自动被删除。
    • 临时视图所在的数据库:创建临时视图时,系统会默认分配一个数据库名称“global_temp”,在使用临时视图时,必须加上这个库名,否则找不到
  2. 第二步,对临时视图进行缓存,同样可以指定缓存级别
  3. 第三步,使用缓存的临时视图
val spark: SparkSession = ...

//1. 创建临时视图
spark.sql("select name, age from db.table").createOrReplaceGlobalTempView("temp_view")

//2. 缓存临时视图
spark.catalog.cacheTable("global_temp.temp_view", StorageLevel.MEMORY_AND_DISK)

//3. 使用缓存的临时视图
spark.sql("select name from global_temp.temp_view")
spark.sql("select age from global_temp.temp_view")
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值