gpt4 book ai didi

pandas - Spark DataFrame 如何处理大于内存的Pandas DataFrame

转载 作者:行者123 更新时间:2023-12-04 23:42:36 27 4
gpt4 key购买 nike

我现在正在学习 Spark,它似乎是 Pandas Dataframe 的大数据解决方案,但我有一个让我不确定的问题。

目前我正在使用 HDF5 存储大于内存的 Pandas 数据帧。 HDF5 是一个很棒的工具,它允许我对 Pandas 数据框进行分块。因此,当我需要对大型 Pandas 数据帧进行处理时,我会分块进行。但 Pandas 不支持分布式处理,HDF5 仅适用于单台 PC 环境。

使用 Spark 数据帧可能是解决方案,但我对 Spark 的理解是数据帧必须能够适应内存,并且一旦作为 Spark 数据帧加载,Spark 会将数据帧分发给不同的工作人员进行分布式处理。

我的理解正确吗?如果是这种情况,那么 Spark 如何处理大于内存的数据帧?它是否支持分块,如 HDF5?

最佳答案

the dataframe must be able to fit in memory, and once loaded as a Spark dataframe, Spark will distribute the dataframe to the different workers to do the distributed processing.



仅当您尝试在驱动程序上加载数据然后并行化时,这才是正确的。在典型情况下,您以可以并行读取的格式存储数据。这意味着您的数据:
  • 每个 worker 都必须可以访问,例如使用分布式文件系统
  • 文件格式必须支持拆分(最简单的例子是普通的旧 csv)

  • 在这种情况下,每个工作人员只读取自己的数据集部分,而无需将数据存储在驱动程序内存中。与计算拆分相关的所有逻辑都由适用的 Hadoop 输入格式透明处理。

    关于 HDF5 文件,您有两个选择:
  • 在驱动程序上以块的形式读取数据,从每个块构建 Spark DataFrame,并合并结果。这效率低下但易于实现
  • 分发 HDF5 文件/文件并直接在工作人员上读取数据。这一般来说更难实现,需要智能数据分发策略
  • 关于pandas - Spark DataFrame 如何处理大于内存的Pandas DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33419590/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com