Python 在什么情况下我可以使用Dask而不是Apache Spark?

Python 在什么情况下我可以使用Dask而不是Apache Spark?,python,pandas,apache-spark,dask,Python,Pandas,Apache Spark,Dask,我目前正在使用Pandas和Spark进行数据分析。我发现Dask提供了并行化的NumPy阵列和数据帧 Pandas使用Python进行数据分析既简单又直观。但由于系统内存有限,我发现在Pandas中处理多个较大的数据帧很困难 简单回答: ApacheSpark是一个结合了分布式 计算机、SQL查询、机器学习以及在 JVM,通常与其他大数据框架(如 Hadoop。。。通常Dask比Spark更小、更轻 我从中了解到以下细节 Dask重量轻 Dask通常在一台机器上使用,但在分布式集群上也运行良

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

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

简单回答:

ApacheSpark是一个结合了分布式 计算机、SQL查询、机器学习以及在 JVM,通常与其他大数据框架(如 Hadoop。。。通常Dask比Spark更小、更轻

我从中了解到以下细节

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

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

限制

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

  • 从未排序的列中设置新索引代价高昂
  • 许多操作,如GroupByApply和join对未排序列的操作,都需要设置索引,如上所述,这是非常昂贵的
  • 熊猫API非常大。dataframe不尝试实现许多pandas功能或任何更奇特的数据结构,如NDFrame
  • 感谢Dask开发人员。这似乎是一项很有前途的技术

    总的来说,我能理解Dask比spark更容易使用。Dask与熊猫一样灵活,具有更大的计算能力和更多的cpu并行性

    我了解关于达斯克的所有上述事实

    那么,大概有多少数据(TB)可以用Dask处理?

    您可能需要读取

    ApacheSpark是一个结合了分布式 计算机、SQL查询、机器学习以及在 JVM,通常与其他大数据框架(如 Hadoop。它最初是为批量数据摄取和查询而优化的 在数据工程和业务分析中很常见,但从那时起 变宽了。Spark通常用于中小型设备 群集,但在单机上也运行良好

    Dask是一个并行编程库,它与数字 Python生态系统提供并行阵列、数据帧、机器 学习和自定义算法。它基于Python和 基础C/Fortran堆栈。Dask最初设计用于 以并行性补充其他库,尤其是数字 计算和高级分析,但自那以后已经扩大了。达斯克是 通常在单台机器上使用,但也可以在 分布式集群

    通常Dask比Spark更小、更轻。这意味着 它具有较少的功能,而是用于 与其他库(尤其是数字库中的库)结合使用 Python生态系统


    仅考虑数据大小不足以选择最佳并行工具/策略。需要考虑算法如何处理数据。我没有尝试这两个,但可能会尝试DASK在单机上,如笔记本电脑或PC,并会考虑部署火花时,需要运行多节点集群。因为使用spark附带的框架学习和调整每个组件看起来非常复杂。您可以在这里找到答案: