pyarrow在大型数据集上无法有效地加速toPandas

问题描述

我在Windows中使用23python 3.7pyspark 2.4.5pyarrow 1.0.1,并且设置了环境变量pandas 0.25.1

我正在尝试使用pyarrow将Spark数据框转换为pandas数据框,以加快转换速度。

我运行的代码

ARROW_PRE_0_15_IPC_FORMAT=1

看起来它们运行的​​时间差不多,启用pyarrow只能加快两秒钟。

继续测试pyarrow是否正在运行,我尝试重新创建博客中提到的示例:https://arrow.apache.org/blog/2017/07/26/spark-arrow/

这是我运行的代码

%time test_pd = test.toPandas() #No pyarrow
Wall time: 19.9 s
spark.conf.set("spark.sql.execution.arrow.enabled","true")
%time test_pd = test.toPandas() #pyarrow enabled
Wall time: 17.9 s

所以看来pyarrow在这里from pyspark.sql.functions import rand df = spark.range(1 << 22).toDF("id").withColumn("x",rand()) df.printSchema() root |-- id: long (nullable = false) |-- x: double (nullable = false) %time pdf = df.toPandas() #No pyarrow Wall time: 23.7 s spark.conf.set("spark.sql.execution.arrow.enabled","true") %time pdf = df.toPandas() #pyarrow enabled Wall time: 1.32 s 上正在大规模地加速,但是对我的数据集来说,影响很小?我的df数据帧在这里有528492行x 6列,但是test在这里还包含4194304行x 2列,与我的数据集相比,元素总数总数相近。

有人知道发生了什么吗?任何帮助将不胜感激。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)