内容简介:有时您需要多次处理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 - 性能调优》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- Web 性能优化:缓存 React 事件来提高性能
- 系统性能提升之缓存
- 听说,加缓存能提高性能?
- 一次缓存性能问题排查
- 性能提升: reids与内存缓存
- 理解高性能内存缓存对象缓存Memcached原理 (Memcached核心概念,部署)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
JAVA 2核心技术 卷Ⅰ
[美] 霍斯特曼、[美] 科奈尔 / 叶乃文、邝劲筠 等 / 机械工业出版社 / 2006-5 / 88.00元
本书是Java技术经典参考书,多年畅销不衰,第7版在保留以前版本风格的基础上,涵盖Java2开发平台标准版J2SE5.0的基础知识,主要内容包括面各对象程序设计、反射与代理、接口与内部类、事件监听器模型、使用Swing UI工具箱进行图形用户界面设计,异常处理、流输入/输出和对象序列化、泛型程序设计等。 本书内容翔实、深入浅出,附有大量程序实例,极具实用价值,是Java初学者和Java程序员......一起来看看 《JAVA 2核心技术 卷Ⅰ》 这本书的介绍吧!