问题描述
我在Windows中使用23
,python 3.7
,pyspark 2.4.5
,pyarrow 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 (将#修改为@)