Spark SQL,DF,RDD cache常用方式

RDD中的cache

调用cache方法

复制代码
val testRDD = sc.parallelize(Seq(elementA, elementB, elementC)).
    map(x => (x._1, x._2)).setName("testRDD")

testRDD.cache()

dataframe中的cache

利用catalog以表的形式对数据进行缓存

复制代码
import org.apache.spark.SparkConf
import org.apache.spark.sql.{SaveMode, SparkSession}
import org.apache.spark.sql.functions.udf



val conf = new SparkConf().setAppName(s"test_app")
val spark = SparkSession.builder().config(conf).getOrCreate()
spark.read.parquet(s"${BASEPATH}/dws_live_mid_stat_order_di/event_day=${event_day}").createOrReplaceTempView(s"dwd_flow_sessionid_di")

spark.catalog.cacheTable("dwd_flow_sessionid_di")
spark.catalog.uncacheTable("dwd_flow_sessionid_di")

SQL中的cache

复制代码
    spark.sql(
      s"""
         |cache table flow_basic_tmp as
         |select
         |    *
         |from
         |    test.tmp_live_mid_stat_order_di
         |""".stripMargin)

UNCACHE TABLE [ IF EXISTS ] table_identifier

SQL cache 相关文档,可以懒加载 CACHE TABLE - Spark 3.5.0 Documentation

需要注意的点 :

Spark.createDateFrame需要执行

基于DF 需要执行action,才能让RDD cache住

相关推荐
东东的脑洞6 分钟前
【面试突击四】JAVA基础知识-线程池与参数调优
java·面试
小股虫6 分钟前
Tair Java实操手册:从零开始的缓存中间件入门指南
java·缓存·中间件
Wyy_9527*13 分钟前
Spring三种注入方式对比
java·后端·spring
shepherd11115 分钟前
从入门到实践:玩转分布式链路追踪利器SkyWalking
java·后端·架构
最贪吃的虎17 分钟前
网络是怎么传输的:从底层协议到浏览器访问网站的全过程剖析
java·开发语言·网络·http·缓存
uup17 分钟前
CompletableFuture 异常吞噬:异步任务异常未处理导致结果丢失
java
爱好读书19 分钟前
AI生成ER图|SQL生成ER图
数据库·人工智能·sql·毕业设计·课程设计
有一个好名字25 分钟前
设计模式-工厂方法模式
java·设计模式·工厂方法模式
篱笆院的狗26 分钟前
Java 中线程之间如何进行通信?
java·开发语言
葱白有滋味31 分钟前
Session、Token 和 JWT 的区别对比
java