设为首页 加入收藏

TOP

Spark学习笔记3——RDD(下)(四)
2019-09-19 11:12:04 】 浏览:155
Tags:Spark 学习 笔记 RDD
e call(Integer x) { return (double) x * x; } }); System.out.println(result.mean()); } }

运行结果

[root@server1 spark-2.4.4-bin-hadoop2.7]# bin/spark-submit --class DoubleRDD ~/Spark_RDD_DoubleRDD.jar
...
19/09/18 16:09:38 INFO DAGScheduler: Job 0 finished: mean at DoubleRDD.java:20, took 0.500705 s
7.5
...

持久化

为了避免多次计算同一个 RDD,我们常常对数据进行持久化处理。具体操作可以参见上一节例程。

Tips:

  • 在Scala 和Java 中,默认情况下 persist() 会把数据以序列化的形式缓存在JVM 的堆空间中
  • 在Python 中,我们会始终序列化要持久化存储的数据,所以持久化级别默认值就是以序列化后的对象存储在JVM 堆空间中
  • 当我们把数据写到磁盘或者堆外存储上时,也总是使用序列化后的数据
  • 缓存的数据太多,内存中放不下,Spark 会自动利用最近最少使用(LRU)的缓存策略把最老的分区从内存中移除
  • unpersist() 可以手动把持久化的RDD 从缓存中移除

持久化级别

级  别 使用的
空间
CPU
时间
是否在
内存中
是否在
磁盘上
备注
MEMORY_ONLY
MEMORY_ONLY_SER
MEMORY_AND_DISK 中等 部分 部分 如果数据在内存中放不下,则溢写到磁盘上
MEMORY_AND_DISK_SER 部分 部分 如果数据在内存中放不下,则溢写到磁盘上。在内存中存放序列化后的数据
DISK_ONLY

P.s.

可以通过在存储级别的末尾加上“_2”来把持久化数据存为两份



  1. 摘自天涯泪小武 的博客?

  2. fold() 和 reduce() 不同的是,需要再加上一个“初始值”来作为每个分区第一次调用时的结果;aggregate() 和 前两者不同的是,返回值类型可以和 RDD 的类型不一致?

首页 上一页 1 2 3 4 下一页 尾页 4/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇〈一〉ElasticSearch的介绍 下一篇centos7放行1521端口

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目