【发布时间】:2019-01-14 00:36:25
【问题描述】:
我有一个具有以下架构的 spark 数据框:
root
|-- cluster_info: struct (nullable = true)
| |-- cluster_id: string (nullable = true)
| |-- influencers: array (nullable = true)
| | |-- element: struct (containsNull = true)
| | | |-- screenName: string (nullable = true)
我需要获取唯一的 screenName 列表,我正在使用下面的代码进行操作。但是collect是一个很繁重的操作,有没有更好的方法呢。
var namesDF = df.select(concat_ws(",", $"cluster_info.influencers.screenName").as("screenName"))
val influencerNameList: List[String] = namesDF.map(r => r(0).asInstanceOf[String]).collect().toList.mkString(",").split(",").toList.distinct
请提出建议。提前致谢。
【问题讨论】:
标签: apache-spark apache-spark-sql