Spark性能优化(4)—— 对多次使用的 RDD 进行持久化或 Checkpoint

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012292754/article/details/86259131

1 对多次使用的 RDD 进行持久化或 Checkpoint

  • 在程序中,对某一个 RDD,基于它进行了多次 transformation 或者 action 操作。那么就非常有必要对其进行持久化操作,以避免对一个 RDD 反复进行计算。
  • 此外,如果要保证在 RDD 持久化数据可能丢失的情况下,还要保证高性能,那么可以对RDD 进行 Checkpoint 操作。

1.1 案例

在这里插入图片描述

  • 这里对一个 RDD 前后进行了2次操作,第一次的时候,从第一个RDD开始,先计算出第一个 RDD ,然后再计算第二个 RDD ,接着往后执行。
  • 但是,后面第二次对 RDD 进行操作的时候,由于 RDD 数据在执行完之后,默认情况下,是很可能会立即被丢弃的。那么这个时候就需要重新计算第一个、第二个 RDD;
  • 可能,持久化的存储在 BlockManager 中的数据,可能会丢失,如果持久化的数据丢失了,那么第二次计算该 RDD 时,会发现 BlockManager 中没有其数据,此时会尝试读取其 checkpoint 数据。但是如果读取不出来,那么就只能重新计算第一个 RDD 和第二个 RDD 了。
  • 所以,针对这种情况,如果要求持久化数据可能丢失的情况下,还是要保证高性能,那么就在第一次计算RDD 时,消耗一些性能,对 RDD 进行 checkpoint 操作。这样,即使持久化数据丢失了,也可以直接读取其 checkpoint 数据

猜你喜欢

转载自blog.csdn.net/u012292754/article/details/86259131