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

新手上路,请多包涵

我需要隐藏 Spark 数据框的一列以列出以后用于 matplotlib

 df.toPandas()[col_name].values.tolist()

看起来这个操作需要大约 18 秒的高性能开销,还有其他方法可以做到这一点或提高性能吗?

原文由 YAKOVM 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 504
2 个回答

如果你真的需要一个本地列表,你在这里可以做的不多,但一个改进是只收集一个列而不是整个列 DataFrame

 df.select(col_name).flatMap(lambda x: x).collect()

原文由 zero323 发布,翻译遵循 CC BY-SA 3.0 许可协议

你可以这样做:

 >>> [list(row) for row in df.collect()]

例子:

>>> 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]]

原文由 P.Panayotov 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题