我有像
这样的火花数据帧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)
答案 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或更新版本。