2017-01-27 3 views
4

Im mit Spark 2.0. Ich habe eine Spalte meines Datenrahmens mit einem WrappedArray von WrappedArrays of Float.Wie man ein WrappedArray [WrappedArray [Float]] in Array [Array [Float]] in Spark (Scala)

Ein Beispiel für eine Reihe wäre:

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

Im Versuch, diese Spalte in eine Array[Array[Float]] zu verwandeln.

Was ich bisher versucht, ist die folgende:

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

aber ich bekomme die folgende Fehlermeldung:

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

Jede Idee, würde sehr geschätzt werden. Dank

Antwort

2

Versuchen Sie folgendes:

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

Es kompiliert für mich

+0

Dank Sami, Ihre Antwort führte mich zu der endgültigen Lösung. Ich werde meine eigene Antwort mit dem genauen Code für diejenigen wie mich aktualisieren, die mit einem Datenrahmen begonnen haben. – bobo32

+0

Meine erste Frage bei Stackoverflow hat 3 Antworten bekommen, keine funktionierte, aber indem ich sie durchkämmte, fand ich eine Lösung. : D –

1

Nach @ sami-badawi ‚s Antwort, die ich die Antwort für diejenigen, wie ich bin Entsendung, die von einem Datenrahmen gestartet.

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

Ich habe versucht, die Werte wie folgt auszudrucken: rdd.map (row => row.get (0) .asInstanceOf [WrappedArray [WrappedArray [String]]]. ToSeq.map (x => x.toSeq .foreach (println))) – Burt

Verwandte Themen