深入大型数据集:并行与分布化Python代码
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2 为什么是大型数据集

围绕大数据这个概念,你可能听说过对一些现代计算中不确定问题的讨论。大数据对于不同的人意味着不同的东西。我发现大多数人用下面这种说法来表示自己“感觉”数据很大——处理起来很不舒服或者很笨拙。

因为本书的目标之一是让你能够处理任何大小的数据集,所以我们将使用大型数据集。我认为,大型数据集的问题有以下三类规模:

1. 数据不仅可以存储在一台个人计算机上,也可以在一台计算机上进行处理。

2. 数据无法保存在一台个人计算机上,但是可以在一台计算机上进行处理。

3. 数据既不能存储在一台个人计算机上,也无法用一台计算机进行处理。

你可能已经知道如何解决第一类问题。大多数问题——尤其是那些用于教授编程的问题——都属于第一类问题。第二类问题处理起来有点难。它们需要一种被称为并行计算的技术,这种技术使我们能够充分利用自己的硬件。最后,我们还有第三类问题。解决这些问题的代价是昂贵的,需要更多的金钱或者时间来解决。为了解决后两类问题,我们将使用一种被称为分布式计算的技术。

Dask——一种不同类型的分布式计算

map和reduce编程风格会将数据放在最前面,这非常适合处理数据,包括从小型数据转换到大型的分布式数据存储。

如果你对学习一种让Python代码更易于阅读和扩展的编程风格不感兴趣,但却仍然希望能够管理大型数据集,那么Dask就是适合你的工具之一。Dask是一个用于分布式数据帧的Python框架,具有与NumPy和pandas相似的API。如果你对此感兴趣,我推荐你阅读Jesse Daniel所著的Data Science with Python and Dask一书(Manning出版社于2019出版)。

通过本书,你将学习一种编程风格,这种风格允许你以相同的方式编写处理这三类规模问题的代码。你还将了解并行计算和两个分布式计算框架(Hadoop和Spark),并且将探索如何在分布式的云环境中使用这些框架。