【发布时间】:2016-12-17 09:12:54
【问题描述】:
我目前正在使用 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 具有以下限制:
- 从未排序的列设置新索引的成本很高
- 许多操作,如 groupby-apply 和未排序列上的连接,都需要设置索引,如上所述,这很昂贵
- Pandas API 非常大。 Dask.dataframe 不会尝试实现许多 pandas 功能或任何更奇特的数据结构,如 NDFrames
感谢 Dask 开发人员。这似乎是很有前途的技术。
总的来说,我可以理解 Dask 比 spark 更易于使用。 Dask 与 Pandas 一样灵活,具有更多计算能力和更多并行 CPU。
我了解上述关于 Dask 的所有事实。
那么,Dask 大概可以处理多少数据(以 TB 为单位)?
【问题讨论】:
-
仅考虑数据大小不足以选择最佳并行工具/策略。需要考虑算法如何处理数据。我没有尝试过这两种方法,但可能会在笔记本电脑或个人电脑等单台机器上尝试 dask。当需要运行多节点集群时,会考虑部署到 spark 上。因为使用 spark 附带的框架来学习和调整每个组件看起来非常复杂。
-
您可以在这里找到回复:medium.com/datadriveninvestor/…
标签: python pandas apache-spark dask