98

我目前正在使用 Pandas 和 Spark 进行数据分析。我发现 Dask 提供了并行化的 NumPy 数组和 Pandas DataFrame。

Pandas 在 Python 中进行数据分析既简单又直观。但是由于系统内存有限,我发现在 Pandas 中处理多个更大的数据帧很困难。

简单的答案:

Apache Spark 是一个包罗万象的框架,结合了分布式计算、SQL 查询、机器学习等,在 JVM 上运行,通常与 Hadoop 等其他大数据框架共同部署。... 一般来说,Dask 比 Spark 更小更轻。

我从http://dask.pydata.org/en/latest/spark.html了解以下详细信息

  • Dask 重量轻
  • Dask 通常在单台机器上使用,但也可以在分布式集群上运行良好。
  • Dask 提供并行数组、数据帧、机器学习和自定义算法
  • Dask 对 Python 用户来说有一个优势,因为它本身就是一个 Python 库,所以在出错时进行序列化和调试会更顺利。
  • Dask 放弃了高层的理解,让用户可以表达更复杂的并行算法。
  • Dask 重量更轻,更容易集成到现有代码和硬件中。
  • 如果你想要一个可以做所有事情的项目,并且你已经在大数据硬件上,那么 Spark 是一个安全的选择
  • Spark 通常用于中小型集群,但也可以在单台机器上运行良好。

我通过以下链接了解更多关于 Dask 的信息 https://www.continuum.io/blog/developer-blog/high-performance-hadoop-anaconda-and-dask-your-cluster

  • 如果您在使用 Pandas、NumPy 或其他 Python 计算时在单台机器上遇到内存问题、存储限制或 CPU 边界,Dask 可以帮助您在单台机器上扩展所有内核,或横向扩展在整个集群的所有核心和内存上。
  • Dask 在单台机器上运行良好,可以利用笔记本电脑上的所有内核并处理大于内存的数据
  • 在具有数百个节点的集群上弹性和弹性地扩展。
  • Dask 使用 Python 原生地处理不同格式和存储系统的数据,包括 Hadoop 分布式文件系统 (HDFS) 和 Amazon S3。Anaconda 和 Dask 可以与您现有的企业 Hadoop 发行版一起使用,包括 Cloudera CDH 和 Hortonworks HDP。

http://dask.pydata.org/en/latest/dataframe-overview.html

限制

Dask.DataFrame 没有实现整个 Pandas 接口。期待这一点的用户会感到失望。值得注意的是,dask.dataframe 具有以下限制:

  1. 从未排序的列设置新索引是昂贵的
  2. 许多操作,如 groupby-apply 和 join 未排序的列需要设置索引,如上所述,这是昂贵的
  3. Pandas API 非常庞大。Dask.dataframe 不会尝试实现许多 pandas 功能或任何更奇特的数据结构,如 NDFrames

感谢 Dask 开发人员。这似乎是非常有前途的技术。

总的来说,我可以理解 Dask 比 spark 更易于使用。Dask 与 Pandas 一样灵活,具有更多的并行计算能力。

我了解有关 Dask 的所有上述事实。

那么,Dask 大概可以处理多少数据(以 TB 为单位)?

4

1 回答 1

49

您可能想阅读Dask 与 Apache Spark 的比较

Apache Spark 是一个包罗万象的框架,结合了分布式计算、SQL 查询、机器学习等,在 JVM 上运行,通常与 Hadoop 等其他大数据框架共同部署。它最初针对数据工程和业务分析中常见的批量数据摄取和查询进行了优化,但后来得到了扩展。Spark 通常用于中小型集群,但也可以在单台机器上运行良好。

Dask 是一个并行编程库,它与 Numeric Python 生态系统相结合,提供并行数组、数据帧、机器学习和自定义算法。它基于 Python 和基础 C/Fortran 堆栈。Dask 最初旨在通过并行性补充其他库,特别是用于数值计算和高级分析,但后来扩展了。Dask 通常在单台机器上使用,但也可以在分布式集群上运行良好。

通常 Dask 比 Spark 更小更轻。这意味着它的功能更少,而是旨在与其他库一起使用,尤其是数字 Python 生态系统中的库。

于 2016-08-10T21:18:14.273 回答