缓存Apache Spark RDD - 性能调优

栏目: 编程工具 · 发布时间: 7年前

内容简介:有时您需要多次处理RDD,而不是一次操作。这带来了一个主要问题...... Spark 确实总是会在磁盘上找到数据。但是你需要处理性能问题。RDD带有cache()和persist()方法,其中cache() = persist(StorageLevel.MEMORY_ONLY).将帮助我们将RDD保存到内存中,详细了解

有时您需要多次处理RDD,而不是一次操作。这带来了一个主要问题...... Spark 确实总是会在磁盘上找到数据。但是你需要处理性能问题。

RDD带有cache()和persist()方法,其中

cache() = persist(StorageLevel.MEMORY_ONLY).将帮助我们将RDD保存到内存中,详细了解 其他选项

让我们用简单的例子来测试它:

<b>import</b> org.apache.spark.storage.StorageLevel._;

val fileRDD = sc.textFile(<font>"/tests/yahoo_stocks.csv"</font><font>);

fileRDD.persist(MEMORY_ONLY);

System.out.println(</font><font>"Count of RDD (first run): "</font><font>+fileRDD.count());

System.out.println(</font><font>"Count of RDD (second run): "</font><font>+fileRDD.count());
</font>

(download the yahoo_stocks.csv from https://github.com/dmatrix/examples/blob/master/spark/hdp/data/yahoo_stocks.csv )

现在让我告诉你发生了什么:

如果没有持久化(MEMORY_ONLY)调用,首先调用fileRDD.count()将触发从磁盘获取数据和计数行。fileRDD.count()的第二次命中意味着同样的事情。

通过持久(MEMORY_ONLY)调用,我们告诉Spark:

做懒加载:

  • 读取文件
  • 将RDD缓存到内存中

现在第二次调用fileRDD.count()应该比第一次调用快得多,因为它不会使用磁盘作为计算内容的源(当然,如果RDD适合内存)

让我们证明一下(运行):

park-shell -i test14.scala
第一次

fileRDD.count() 运行输出:

18/02/17 22:21:10 INFO DAGScheduler: Job 0 finished: count at <console>:33,  
took 1,425495 s
Count of RDD (first run): 4794

第二次 fileRDD.count() 运行输出

18/02/17 22:21:11 INFO DAGScheduler: Job 1 finished: count at <console>:33,  
took 0,121783 s
Count of RDD (second run): 4794

看看第二个RDD动作的巨大加速。


以上所述就是小编给大家介绍的《缓存Apache Spark RDD - 性能调优》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

探索需求

探索需求

章柏幸、王媛媛、谢攀、杰拉尔德・温伯格、唐纳德・高斯 / 章柏幸、王媛媛、谢攀 / 清华大学出版社 / 2004-7-1 / 39.00元

本书将与您一起寻找"什么是客户真正想要的"这一问题的答案。 本书着眼于系统设计之前的需求过程,它是整个开发过程(如何设计人们想要的产品和系统)中最有挑战性的那部分。通过对一些需求分析中的常见误区和问题的分析和讨论,从和客户沟通开始,深入研究一些可能的需求,澄清用户和开发者期望值,最终给出了能够大幅度提高项目成功几率的一些建议方法。 本书由该领域内公认的两位作者合著,搜集了他们在大大小小......一起来看看 《探索需求》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换