如何在Spark中将数据集[Seq [T]]转换为Dataset [T]

时间:2017-08-16 21:10:46

标签: scala apache-spark dataset

如何将Dataset[Seq[T]]转换为Dataset[T]

例如,Dataset[Seq[Car]]Dataset[Car]

1 个答案:

答案 0 :(得分:3)

你可以做flatMap:

val df = Seq(Seq(1, 2, 3), Seq(4, 5, 6, 7)).toDF("s").as[Seq[Int]];
df.flatMap(x => x.toList)

你也可以尝试爆炸功能:

df.select(explode('s)).select("col.*").as[Car]

完整示例:

import org.apache.spark.sql.functions._
case class Car(i : Int);
val df = Seq(List(Car(1), Car(2), Car(3))).toDF("s").as[List[Car]];
val df1 = df.flatMap(x  => x.toList)
val df2 = df.select(explode('s)).select("col.*").as[Car]