2017-01-27 7 views
4

Im using Spark 2.0. У меня есть столбец моей файловой рамки, содержащий WrappedArray из WrappedArrays of Float.Как нарисовать WrappedArray [WrappedArray [Float]] в Array [Array [Float]] в искро (scala)

Пример строки будет:

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

Im пытается преобразовать этот столбец в 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

Попробуйте это:

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

Он компилирует для меня

+0

Спасибо, Сами, ваш ответ привел меня к окончательной резолюции. Я обновляю свой собственный ответ с точным кодом для таких, как я, которые начали с DataFrame. – bobo32

+0

Мой первый вопрос в Stackoverflow получил 3 ответа, никто из них не работал, но, расчесывая их, я нашел решение. : D –

1

После @ саамский Бадави «ы ответа я отправляю ответ для тех, кто, как я начал с dataframe.

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

Я попытался распечатать значения ниже: rdd.map (row => row.get (0) .asInstanceOf [WrappedArray [WrappedArray [String]]]. ToSeq.map (x => x.toSeq .foreach (Println))) – Burt