网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

揭秘Spark应用性能调优

引言:在多台机器上分布数据以及处理数据是Spark的核心能力,即我们所说的大规模的数据集处理。为了充分利用Spark特性,应该考虑一些调优技术。本文每一小节都是关于调优技术的,并给出了如何实现调优的必要步骤。
本文选自《Spark GraphX实战》。

创新互联网络公司拥有10年的成都网站开发建设经验,近1000家客户的共同信赖。提供成都网站制作、网站建设、网站开发、网站定制、卖链接、建网站、网站搭建、响应式网站建设、网页设计师打造企业风格,提供周到的售前咨询和贴心的售后服务

1 用缓存和持久化来加速 Spark

我们知道Spark 可以通过 RDD 实现计算链的原理 :转换函数包含在 RDD 链中,但仅在调用 action 函数后才会触发实际的求值过程,执行分布式运算,返回运算结果。要是在 同一 RDD 上重复调用 action 会发生什么?

RDD 持久化

一般 RDD 不会保留运算结果,如果再次调用 action 函数,整个 RDD 链会重新 运算。有些情况下这不会有问题,但是对于许多机器学习任务和图处理任务,这就 是很大的问题了。通常需要多次迭代的算法,在同一个 RDD 上执行很多次,反复 地重新加载数据和重新计算会导致时间浪费。更糟糕的是,这些算法通常需要很长 的 RDD 链。
  看来我们需要另一种方式来充分利用集群可用内存来保存 RDD 的运算结果。 这就是 Spark 缓存(缓存也是 Spark 支持的一种持久化类型)。
  要在内存中缓存一个 RDD,可以调用 RDD 对象的 cache 函数。以下在 spark- shell 中执行的代码,会计算文件的总行数,输出文件内容 :

val filename = "..."val rdd1 = sc.textFile(filename).cacherdd1.countrdd1.collect

如果不调用 cache 函数,当 count 和 collect 这两个 action 函数被调用时, 会导致执行从存储系统中读文件两次。调用了 cache 函数,第一个 action 函数(count 函数)会把它的运算结果保留在内存中,在执行第二个 action 函数(collection 函数)时,会直接在使用缓存的数据上继续运算,而不需要重新计算整个 RDD 链。 即使通过转换缓存的 RDD,生成新的 RDD,缓存的数据仍然可用。下面的代码会找出所有的注释行(以 # 开始的行数据)。

val rdd2 =rdd1.filter(_.startsWith("#"))
rdd2.collect

因为 rdd2 源于已缓存的 rdd1,rdd1 已经把它的运算结果缓存在内存中了, 所以 rdd2 也就不需要重新从存储系统中读取数据。

注意:cache 方法作为一个标志表示 RDD 应当缓存,但并不是立即缓存。 缓存发生在当前 RDD 在下一次要被计算的时候。

持久化等级

如上所述,缓存是其中一种持久化类型。下表列出了 Spark 支持的所有持久 化等级。
        揭秘Spark应用性能调优
  想及时获得更多精彩文章,可在微信中搜索“博文视点”或者扫描下方二维码并关注。
                       揭秘Spark应用性能调优


网页名称:揭秘Spark应用性能调优
转载来于:http://bjjierui.cn/article/psopjj.html

其他资讯