Scala Spark将单列转换为数组

Scala Spark将单列转换为数组,scala,apache-spark,apache-spark-sql,Scala,Apache Spark,Apache Spark Sql,如何将spark 2.0.1中的单个列转换为数组 +---+-----+ | id| dist| +---+-----+ |1.0|2.0| |2.0|4.0| |3.0|6.0| |4.0|8.0| +---+-----+ 应返回数组(1.0、2.0、3.0、4.0) A 失败于 java.lang.RuntimeException: Unsupported array type: [Lorg.apache.spark.sql.Row; java.lang.RuntimeException

如何将spark 2.0.1中的单个列转换为数组

+---+-----+
| id| dist| 
+---+-----+
|1.0|2.0|
|2.0|4.0|
|3.0|6.0|
|4.0|8.0|
+---+-----+
应返回
数组(1.0、2.0、3.0、4.0)

A

失败于

java.lang.RuntimeException: Unsupported array type: [Lorg.apache.spark.sql.Row;
java.lang.RuntimeException: Unsupported array type: [Lorg.apache.spark.sql.Row;

如果将Java列表重新转换为Scala列表,为什么要使用JavaConverter?您只需收集数据集,然后将此行数组映射到一个双精度数组,如下所示:

df.select("id").collect.map(_.getDouble(0))

为了避免JVM驱动程序上的内存开销,我会尝试类似的方法。使用这种方法,只将选定的列值复制到驱动程序JVM

df.select(collect_list("id")).first().getList[Double](0)

这将返回
java.util.List[Double]

数据帧上可能重复的
collect()
,这不是一种可伸缩的方式。谁在这里谈到了可伸缩性?
df.select(collect_list("id")).first().getList[Double](0)