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住

相关推荐
杰克尼3 分钟前
3. 分巧克力
java·数据结构·算法
听风吟丶5 分钟前
Java 高级多线程编程:从虚拟线程到结构化并发的实战演进
java·开发语言
o***59276 分钟前
Spring 过滤器:OncePerRequestFilter 应用详解
java·后端·spring
稚辉君.MCA_P8_Java10 分钟前
Gemini永久会员 三个线程(A、B、C)交替执行
java·后端·架构
lijiatu1008613 分钟前
C++ 类成员变量声明语法错误
java·开发语言·c++
Monly2121 分钟前
Java八股文:Redis篇
java·开发语言·redis
b***594325 分钟前
MySQL数据库(SQL分类)
数据库·sql·mysql
L***p31335 分钟前
Spring Boot 经典九设计模式全览
java·spring boot·设计模式
i***279542 分钟前
MySQL 常用 SQL 语句大全
数据库·sql·mysql
故事不长丨1 小时前
C#线程的使用
java·microsoft·c#