首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有一种更快的方法可以将一列转换为python列表?(收集()很慢)

是否有一种更快的方法可以将一列转换为python列表?(收集()很慢)
EN

Stack Overflow用户
提问于 2020-07-20 17:14:35
回答 1查看 922关注 0票数 3

我正在尝试使用收集函数将一列存储到python列表中。例如:

list_a =[dataset_name.collect()中行的rowcolumn_name]

但是这是一个非常慢的过程,一个包含3列和27行的数据需要超过10秒。

是否有更快的方法可以做到?

--我试着在这个步骤之前缓存数据。使用这个步骤,上面的查询将在2秒内执行,但是缓存步骤本身大约需要7-8秒,所以我减少时间的目的不是完全填满。

而且我的代码是这样的,在这个步骤之前,我每次都需要重新构建dataframe,所以需要再次进行缓存,所以这个步骤(缓存dataframe)在时间减少方面没有多大帮助。

提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2020-07-20 17:47:09

您的代码可以通过只收集一列数据来稍微优化:

代码语言:javascript
复制
list_a = [row[column_name] for row in dataset_name.select(column_name).collect()]

如果使用奎因,则此代码更简洁。

代码语言:javascript
复制
import quinn

list_a = quinn.column_to_list(df, col_name)

collect()将所有数据传输到驱动节点,而且代价很高。只有通过收集更少的数据才能使其更快(例如,dataset_name.select(column_name).distinct().collect()通常会更快)。

Spark优化用于在集群中分布数据集,并并行运行计算。Spark的分布式特性使得在单个节点上收集结果的计算相对缓慢。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63000596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档