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

我目前使用熊猫和星火的数据分析。我发现 Dask 提供并行 NumPy 数组和熊猫数据框架。

熊猫用 Python 进行数据分析非常简单和直观。但由于系统内存有限,我发现熊猫很难处理多个较大的数据帧。

答案很简单:

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

我从 http://dask.pydata.org/en/latest/spark.html了解到以下细节

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

从下面的链接我了解了更多关于 Dask 的事情 Https://www.continuum.io/blog/developer-blog/high-performance-hadoop-anaconda-and-dask-your-cluster

  • 如果您在使用 Panda、 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

限制

戴斯克。DataFrame 不实现整个 Pandas 接口。期望如此的用户将会失望。值得注意的是,dask.dataframe 有以下限制:

  1. 从未排序的列设置新索引的开销很大
  2. 许多操作,如 groupby-application 和 join 对未排序列的操作,都需要设置索引,正如前面提到的,设置索引的开销很大
  3. 熊猫应用程序接口非常大。Dataframe 并不试图实现许多大熊猫特性或者其他更奇特的数据结构,比如 NDFrames

多亏了 Dask 的开发人员,这看起来是个很有前途的技术。

总的来说,我能理解 Dask 比火花更容易使用。Dask 和熊猫一样灵活,拥有更强大的计算能力和更多的 CPU 并行运行。

以上关于达斯克的事情我都了解。

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

40945 次浏览

you may want to read Dask comparison to Apache Spark

Apache Spark is an all-inclusive framework combining distributed computing, SQL queries, machine learning, and more that runs on the JVM and is commonly co-deployed with other Big Data frameworks like Hadoop. It was originally optimized for bulk data ingest and querying common in data engineering and business analytics but has since broadened out. Spark is typically used on small to medium sized cluster but also runs well on a single machine.

Dask is a parallel programming library that combines with the Numeric Python ecosystem to provide parallel arrays, dataframes, machine learning, and custom algorithms. It is based on Python and the foundational C/Fortran stack. Dask was originally designed to complement other libraries with parallelism, particular for numeric computing and advanced analytics, but has since broadened out. Dask is typically used on a single machine, but also runs well on a distributed cluster.

Generally Dask is smaller and lighter weight than Spark. This means that it has fewer features and instead is intended to be used in conjunction with other libraries, particularly those in the numeric Python ecosystem.