将 Spark 数据帧列值收集到列表 (scala) 中的快速方法



我正在尝试使用 scala 将 Spark 数据帧列的不同值收集到列表中。我尝试了不同的选择:

  • df.select(columns_name).distinct().rdd.map(r => r(0).toString).collect().toList
  • df.groupBy(col(column_name)).agg(collect_list(col(column_name))).rdd.map(r => r(0).toString).collect().toList

它们都有效,但对于我的数据量,这个过程非常慢,所以我正在尝试加快速度。有人有我可以尝试的建议吗?

我正在使用火花 2.1.1

谢谢!

你可以试试

df.select("colName").dropDuplicates().rdd.map(row =>row(0)).collect.toList

或者你可以试试

df.select("colName").dropDuplicates().withColumn("colName", collect_list("colName")).rdd.map(row =>row(0)).collect

最新更新