Pyspark 数据框获取列的所有值

che*_*hen 7 python pandas pyspark

我想获取 pyspark 数据框中一列的所有值。我进行了一些搜索,但从未找到有效且简短的解决方案。

假设我想在名为“name”的列中获取一个值。我有一个解决方案:

sum(dataframe.select("name").toPandas().values.tolist(),[])
Run Code Online (Sandbox Code Playgroud)

它有效,但效率不高,因为它转换为熊猫然后展平列表......有没有更好和更短的解决方案?

SMa*_*MaZ 11

下面的选项将提供比sum.

使用 collect_list

import pyspark.sql.functions as f
my_list = df.select(f.collect_list('name')).first()[0]
Run Code Online (Sandbox Code Playgroud)

使用 RDD:

my_list = df.select("name").rdd.flatMap(lambda x: x).collect()
Run Code Online (Sandbox Code Playgroud)

我不确定,但在我的压力测试中,collect_list表现更好。如果有人可以确认会很棒。