精通Spark数据科学
by Posts & Telecom Press, Andrew Morgan, Antoine Amend, David George, Matthew Hallett
第14章 可扩展算法
在本章中,我们将讨论在Spark上编写高效且可扩展的分析所面临的挑战。首先将向读者介绍分布式并行化和可扩展性的一般概念以及它们与Spark的关系。我们将回顾Spark的分布式体系架构,让读者了解其基本原理以及它如何支持并行处理范式。我们将了解可扩展分析的特性以及支持这些特性的Spark元素(例如RDD、combineByKey和GraphX)。
我们将了解为什么有时即使是在小规模数据下工作的基础算法,也会经常在大数据中工作失败。我们将看到在编写运行于海量数据集上的Spark作业时要如何避免出现问题,包括使用均值/方差的示例。读者将了解算法的结构以及如何编写可扩展到超过PB级数据的自定义数据科学分析。
我们将继续讨论Spark内存模型的一些局限性,如内存使用过多、传统数据模型(包括面向对象方法[OOP]和第三范式[3NF])的缺陷、反规范化数据表示的好处、固定精度数字表示的危险等,以及它们与编写高效spark作业的关系。
本章最后介绍与性能相关的主要特性和模式,这些特性和模式有助于Spark中的高效运行时处理,并说明何时利用它们。我们将介绍并行化策略、缓存、洗牌策略、垃圾回收优化和概率模型等功能,并解释如何让这些功能帮助你充分利用Spark。
本章还强调了在分析创作时,对开发过程采用良好的整体方法的重要性。它介绍了专业人员的提示和技巧,这些将确保你的算法编写成功。
14.1 基本原则
在本书中,我们展示了许多数据科学技术,通过使用Spark的强大功能,这些技术可以扩展到处理PB级的数据。希望你已经发现这些技术非常有用,以至于想要开始在自己的分析中使用它们,事实上,你已经受到启发,去创建自己的数据科学管道吧!
编写自己的分析绝对是一项挑战!它有时会非常有趣,当它们工作得很好的时候,会很棒。但是有时候让它们大规模高效运行(甚至根本运行不起来)似乎是一项艰巨的任务。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access