CheckPoint
package com.shujia.spark.core import org.apache.spark.{SparkConf, SparkContext} import org.apache.spark.rdd.RDD object Demo16CheckPoint { def main(args: Array[String]): Unit = { val conf: SparkConf = new SparkConf() .setMaster("local") .setAppName("cache") val sc = new SparkContext(conf) //指定checkpoint 保存的路径 sc.setCheckpointDir("data/checkpoint") val studentRDD: RDD[String] = sc.textFile("data/students.txt") val studentsRDD: RDD[(String, String, Int, String, String)] = studentRDD.map(student => { println("studentsRDD处理") val split: Array[String] = student.split(",") val id: String = split(0) val name: String = split(1) val age: Int = split(2).toInt val gender: String = split(3) val clazz: String = split(4) (id, name, age, gender, clazz) }) /** * checkpoint 流程 * 1、当第一个job 执行完成之后会从后面前回溯,如果rdd调用了checkpoint方法会被打上一个标记 * 2、另启动一个job重新计算这个rdd的数据,将rdd的数据保存到hdfs * 3、后续的job 就可以直接使用checkpoint中的数据 * * 优化:可以在checkpoint执行进行cahce * * checkpoint主要用在Spark streaming */ studentsRDD.cache() studentsRDD.checkpoint() //班级人数 val clazzNum: RDD[(String, Int)] = studentsRDD.map(stu => (stu._5, 1)).reduceByKey(_ + _) clazzNum.foreach(println) //性别的人数 val genderNum: RDD[(String, Int)] = studentsRDD.map(stu => (stu._4, 1)).reduceByKey(_ + _) genderNum.foreach(println) //性别人数 val ageNumRDD: RDD[(Int, Int)] = studentsRDD.map(stu => (stu._3, 1)).reduceByKey(_ + _) ageNumRDD.foreach(println) } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能