scala映射序列的元组向量

时间:2017-01-05 12:04:01

标签: scala apache-spark collections

我有像

这样的火花数据帧
val df = Seq((1, 2), (2, 1), (1,2)).toDF()

收集为val local = df.collect时,结果为Array([1,2], [2,1], [1,2])

如何将此映射到2个单独的向量,如

val col1: Seq(1,2,1)
val col2: Seq(2,1,2)

1 个答案:

答案 0 :(得分:2)

要在收集之前拆分 - 您可以使用两个单独的select操作:

val col1: Array[Int] = df.select("_1").as[Int].collect()
val col2: Array[Int] = df.select("_2").as[Int].collect()

但是 - 请注意,创建df的计算将执行两次,除非您坚持(例如事先调用df.cache())。

收集后分割

val arr = df.as[(Int, Int)].collect()
val (col1, col2) = arr.unzip

P.S。所有这些都假定您使用Spark 1.6或更新版本。