如何将 spark 数据集转换为 scala seq

Ira*_* Re 1 scala scala-collections apache-spark apache-spark-dataset

我有以下案例类

case class Station(id: Long, name: String) extends Node
Run Code Online (Sandbox Code Playgroud)

和一个站的 Spark 数据集

vertices: org.apache.spark.sql.Dataset[Station] = [id: bigint, name: string]
Run Code Online (Sandbox Code Playgroud)

我想将顶点数据集转换为 Seq[Station]。我找到了很多关于如何从序列创建数据集的教程,反之亦然。你对我有什么暗示吗?

Tho*_*ois 7

您可以使用collect将数据集转换为Array. 然后您可以自由转换为Seq:

val verticesSeq: Seq[Station] = vertices.collect().toSeq
Run Code Online (Sandbox Code Playgroud)

但请谨慎使用:

运行 collect 需要将所有数据移动到应用程序的驱动程序进程中,并且在非常大的数据集上执行此操作可能会导致驱动程序进程崩溃并出现 OutOfMemoryError。