如何提高PyArrow以外的pyspark到pandas数据帧转换的效率

维吉

我也尝试了PyArrow,在我的示例中,我使用spark.sql语句获取了spark datframe。之后,我想转换为pandas数据框。为了显示执行时间,我运行了以下语句。

import time
startTime = time.time()
df=df.toPandas()
executionTime = (time.time() - startTime)
executionTime

这给了1021.55

我也试过了

import time
startTime = time.time()
spark.conf.set("spark.sql.execution.arrow.pyspark.enabled", "true")
df=df.toPandas()
executionTime = (time.time() - startTime)
executionTime

这给了1008.71

简要介绍一下数据框的形状是(944,5)。以下是Spark数据框中的数据类型

import pandas as pd
pd.set_option('max_colwidth', -1) # to prevent truncating of columns in jupyter

def count_column_types(spark_df):
"""Count number of columns per type"""
return pd.DataFrame(spark_df.dtypes).groupby(1, as_index=False)[0].agg({'count':'count', 'names':lambda x: " | ".join(set(x))}).rename(columns={1:"type"})
 count_column_types(df) 

    type           count    names
 0  bigint          1   col4
 1  date            1   col1
 2  decimal(20,4)   1   col5
 3  int             1   col2
 4  string          1   col3

请让我知道我有什么办法可以提高效率

亚历克斯·奥特

spark.sql.execution.arrow.pyspark.enabled,如果你正在使用所谓的熊猫UDF的有效果,但不是在你的情况。

您的问题是toPandas需要从执行程序到驱动程序节点收集所有数据,但是在此之前,它需要处理SQL查询,并且可能存在主要瓶颈(您没有显示示例,所以很难说)。您可以尝试了解瓶颈所在的位置-在SQL查询执行中,或者实际上在瓶颈中toPandas为此,请尝试以下操作:

df = spark.sql(....)
import time
startTime = time.time()
df.write.format("noop").mode("overwrite").save()
executionTime = (time.time() - startTime)
executionTime

并将执行时间与您从中获得的时间进行比较toPandas

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

试图提高使用R将数据帧转换为较大数据帧的功能的效率

来自分类Dev

提高遍历数据帧的效率

来自分类Dev

如何提高数据生成器的效率?

来自分类Dev

如何转换 Pandas 数据帧架构

来自分类Dev

从pyspark转换在Pandas数据帧上实现Plotly

来自分类Dev

如何在pyspark中将密集向量转换为数据帧?

来自分类Dev

如何根据pyspark数据帧中的条件转换日期格式?

来自分类Dev

如何在pyspark中将嵌套字典转换为数据帧?

来自分类Dev

numpy 数组到 Pandas 数据帧的转换 - ValueError

来自分类Dev

如何提高循环效率

来自分类Dev

如何提高循环效率

来自分类Dev

如何提高XSLT效率

来自分类Dev

如何提高算法的效率?

来自分类Dev

有很多选择时如何提高我的pandas效率

来自分类Dev

如何提高SQLite数据库的搜索效率?

来自分类Dev

如何将colSums转换为R到数据帧

来自分类Dev

如何将colSums转换为R到数据帧

来自分类Dev

如何过滤pyspark数据帧

来自分类Dev

通过 pyspark.sql.dataframe 将 XML 数据转换为 Pandas 数据帧

来自分类Dev

如何将for循环的结果转换为pandas数据帧?

来自分类Dev

pyspark数据帧到配置单元表

来自分类Dev

数据帧到 rdd python/spark/pyspark

来自分类Dev

如何提高该程序的效率?

来自分类Dev

如何提高内联函数效率?

来自分类Dev

如何提高我的特里效率?

来自分类Dev

如何提高多线程效率?

来自分类Dev

如何提高慢循环的效率

来自分类Dev

如何提高IsItAHoliday函数的效率?

来自分类Dev

如何提高AWK程序的效率