【问题标题】:topandas() using pyarrow returns empty dataframe使用 pyarrow 的 topandas() 返回空数据框
【发布时间】:2021-02-04 15:47:05
【问题描述】:

我有一个包含 500 万行和 250 列的 spark 数据框。当我使用"spark.sql.execution.arrow.enabled" 将此数据帧topandas() 转换为"true" 时,它会返回一个只有列的空数据帧。

禁用 pyarrow 我得到以下错误

Py4JJavaError: An error occurred while calling o124.collectToPython. : java.lang.OutOfMemoryError: GC overhead limit exceeded

有没有办法通过增加某种内存分配来执行这个操作?

除了https://issues.apache.org/jira/browse/SPARK-28881,我找不到任何在线资源,这没什么帮助

【问题讨论】:

    标签: python pandas pyspark apache-spark-sql pyarrow


    【解决方案1】:

    好的,这个问题与内存有关,因为在将 spark 数据帧转换为 pandas 数据帧 spark (Py4j) 时必须通过 throw 消耗大量内存的收集,所以我建议你做的是在创建 spark 会话时只是重新配置内存,这里是一个例子:

    from pyspark import SparkContext
    SparkContext.setSystemProperty('spark.executor.memory', '16g')
    sc = SparkContext("local", "stack_over_flow") 
    
    

    继续使用 sc(火花上下文)或火花会话,如你所愿 如果这不起作用,则可能是版本冲突,因此请检查这些选项:
    -从您使用 Python 的位置设置环境变量 ARROW_PRE_0_15_IPC_FORMAT=1
    - 暂时降级到 pyarrow 如果您可以共享您的脚本,那就更清楚了

    【讨论】:

      猜你喜欢
      • 2019-11-01
      • 2020-01-20
      • 2019-02-02
      • 2017-09-02
      • 1970-01-01
      • 2019-02-04
      • 2018-04-26
      • 1970-01-01
      • 2020-09-03
      相关资源
      最近更新 更多