💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
**RDD缓存机制:** 缓存数据至内存/磁盘,可大幅度提升Spark应用性能。有如下两个缓存方法: ```scala // 1. cache缓存就是persist(StorageLevel.MEMORY_ONLY) def cache(): this.type = persist() def persist(): this.type = persist(StorageLevel.MEMORY_ONLY) // 2. persist(newLevel: StorageLevel)可以选择缓存级别 def persist(newLevel: StorageLevel) ``` **示例:** ```scala val u1 = sc.textFile("file:///root/data/users.txt").cache u1.collect // 删除users.txt,再试试,数据应该还是在的 u1.unpersist() // 清空缓存 ``` <br/> :-: StorageLevel缓存级别 | 级别 |使用空间 |CPU时间 |是否在内存中 |是否在磁盘上 |备注| | --- | --- | --- | --- | --- | --- | | MEMORY_ONLY |高 |低 |是 |否  | | MEMORY_ONLY_2 |高 |低|是 |否 |数据存2份| | MEMORY_ONLY_SER |低 |高 |是 |否 |数据序列化| | MEMORY_ONLY_SER_2 |低 |高 |是 |否 |数据序列化,数据存2份| | MEMORY_AND_DISK |高 |中等| |部分| 部分| 如果数据在内存中放不下,则溢写到磁盘| | MEMORY_AND_DISK_2 |高 |中等| 部分 |部分| 数据存2份| | MEMORY_AND_DISK_SER |低 |高 |部分| 部分|   | MEMORY_AND_DISK_SER_2 |低 |高 |部分 |部分 |数据存2份| | DISK_ONLY |低 |高 |否 |是 |  | DISK_ONLY_2 |低 |高 |否 |是 |数据存2份| | NONE  |    |   | | | | | OFF_HEAP  |   |  | | | | <br/> **缓存应用场景:** (1)从文件加载数据之后,因为重新获取文件成本较高。 (2)经过较多的算子变换之后,重新计算成本较高。 (3)单个非常消耗资源的算子之后。 <br/> **缓存使用注意事项:** cache(),或persist() <ins>遇到Action算子计算完成后才生效</ins>。