
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),并且将探索如何在分布式的云环境中使用这些框架。