如何在spark(scala)中将WrappedArray [WrappedArray [Float]]强制转换为Array [Array [Float]]

时间:2017-01-27 23:37:24

标签: arrays scala casting spark-dataframe apache-spark-2.0

我正在使用Spark 2.0。 我的数据框列中包含WrappedArray的Florap WrappedArrays。

一行的例子是:

[[1.0 2.0 2.0][6.0 5.0 2.0][4.0 2.0 3.0]]

我正在尝试将此列转换为 Array[Array[Float]]

到目前为止,我尝试了以下内容:

dataframe.select("mycolumn").rdd.map(r => r.asInstanceOf[Array[Array[Float]]])

但是我收到以下错误:

Caused by: java.lang.ClassCastException:
 org.apache.spark.sql.catalyst.expressions.GenericRowWithSchema cannot be cast to [[F

任何想法都会受到高度赞赏。感谢

2 个答案:

答案 0 :(得分:3)

试试这个:

  val wawa: WrappedArray[WrappedArray[Float]] = null 
  val res: Array[Array[Float]] = wawa.map(inner => inner.array).toArray

它为我编译

答案 1 :(得分:2)

按照@ sami-badawi的回答,我正在为那些从数据框开始的人发布答案。

dataframe.select("mycolumn").rdd.map
(row => row.get(0).asInstanceOf[WrappedArray[WrappedArray[Float]]].array.map(x=>x.toArray))