【发布时间】:2021-12-30 05:59:08
【问题描述】:
我有一个 13M 行的 pyspark 数据框,我想将其转换为 pandas 数据框。然后数据帧将被重新采样,以根据其他参数以各种频率(例如 1 秒、1 分钟、10 分钟)进行进一步分析。
从文献 [1, 2] 我发现使用以下任一行都可以加快 pyspark 到 pandas 数据帧之间的转换:
spark.conf.set("spark.sql.execution.arrow.pyspark.enabled", "true")
spark.conf.set("spark.sql.execution.arrow.enabled", "true")
但是,在数据帧转换期间,我看不到任何性能改进。所有列都是字符串,以确保它们与 PyArrow 兼容。在下面的示例中,所用时间始终在 1.4 到 1.5 分钟之间:
我看到了处理时间的变化从几秒减少到毫秒的例子 [3]。我想知道我做错了什么以及如何进一步优化代码。谢谢。
【问题讨论】:
-
这可能取决于您的其余代码,Spark 使用惰性评估,因此取决于您调用“to_pandas()”之前的步骤,大部分执行时间可能在其他地方。
-
您好,感谢您的回复。但上面显示的时间仅适用于屏幕截图中包含的行。此处未包含其余代码的时间。
-
您要转换的数据框是示例中的 Sprak '范围' 还是从源读取并执行一些转换?
-
你运行的是什么版本的 spark?
-
如果您使用的是笔记本,您的 spark 配置已经存在。你不能以你想要的方式改变它。您需要更改启动配置以包含此设置,这取决于您在以后的版本中使用的 spark 版本,默认情况下已经启用。
标签: pandas pyspark apache-spark-sql azure-databricks pyarrow