第14章 可扩展算法

在本章中,我们将讨论在Spark上编写高效且可扩展的分析所面临的挑战。首先将向读者介绍分布式并行化和可扩展性的一般概念以及它们与Spark的关系。我们将回顾Spark的分布式体系架构,让读者了解其基本原理以及它如何支持并行处理范式。我们将了解可扩展分析的特性以及支持这些特性的Spark元素(例如RDD、combineByKey和GraphX)。

我们将了解为什么有时即使是在小规模数据下工作的基础算法,也会经常在大数据中工作失败。我们将看到在编写运行于海量数据集上的Spark作业时要如何避免出现问题,包括使用均值/方差的示例。读者将了解算法的结构以及如何编写可扩展到超过PB级数据的自定义数据科学分析。

我们将继续讨论Spark内存模型的一些局限性,如内存使用过多、传统数据模型(包括面向对象方法[OOP]和第三范式[3NF])的缺陷、反规范化数据表示的好处、固定精度数字表示的危险等,以及它们与编写高效spark作业的关系。

本章最后介绍与性能相关的主要特性和模式,这些特性和模式有助于Spark中的高效运行时处理,并说明何时利用它们。我们将介绍并行化策略、缓存、洗牌策略、垃圾回收优化和概率模型等功能,并解释如何让这些功能帮助你充分利用Spark。

本章还强调了在分析创作时,对开发过程采用良好的整体方法的重要性。它介绍了专业人员的提示和技巧,这些将确保你的算法编写成功。

在本书中,我们展示了许多数据科学技术,通过使用Spark的强大功能,这些技术可以扩展到处理PB级的数据。希望你已经发现这些技术非常有用,以至于想要开始在自己的分析中使用它们,事实上,你已经受到启发,去创建自己的数据科学管道吧!

编写自己的分析绝对是一项挑战!它有时会非常有趣,当它们工作得很好的时候,会很棒。但是有时候让它们大规模高效运行(甚至根本运行不起来)似乎是一项艰巨的任务。 ...

Get 精通Spark数据科学 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.