spark-将数据框转换为列表以提高性能

Yak*_*kov 1 python performance pandas apache-spark pyspark

我需要掩盖Spark数据框的一列以列出以便以后用于matplotlib

df.toPandas()[col_name].values.tolist()
Run Code Online (Sandbox Code Playgroud)

好像有高性能开销,此操作大约需要18秒,是否还有其他方法可以做到这一点或提高性能?

小智 7

您可以这样操作:

>>> [list(row) for row in df.collect()]
Run Code Online (Sandbox Code Playgroud)

示例:
>>> d = [['Alice', 1], ['Bob', 2]]
>>> df = spark.createDataFrame(d, ['name', 'age'])
>>> df.show()
+-----+---+
| name|age|
+-----+---+
|Alice| 1|
| Bob| 2|
+-----+---+
>>> to_list = [list(row) for row in df.collect()]
print list
结果:[[u'Alice', 1], [u'Bob', 2]]


zer*_*323 5

如果您确实需要本地列表,则可以在这里做很多事情,但是一个改进是仅收集单个列而不是整个列DataFrame

df.select(col_name).flatMap(lambda x: x).collect()
Run Code Online (Sandbox Code Playgroud)

  • 好吧,对于初学者,您可以仔细检查您的管道。有什么理由期望更快的执行速度?您是否缓存了重复使用的数据?除此之外,还考虑使用不需要完整数据的更智能的可视化技术(采样,存储,不同的外推方法,阴影)。您现在收集了多少数据? (2认同)