2015-10-18 6 views
7

Ich habe eine Array[String] in eine Parquet Datei von Spark gespeichert.Array von String aus Spark lesen

es zu lesen, die ich benutze:

row.getAs[Array[String]]("result") 

aber erhalten:

java.lang.ClassCastException: scala.collection.mutable.WrappedArray$ofRef cannot be cast to [Ljava.lang.String; 

Hier das Ergebnis printSchema() ist:

root                    
|-- result: array (nullable = true) 
| |-- element: string (containsNull = true) 

Wie die getAs() geändert werden sollte?

+5

Funktioniert 'row.getAs [Seq [String]] (" Ergebnis ")? – Reactormonk

+0

Oder 'row.getAs [scala.collection.mutable.WrappedArray [String]] (" result ")'. @Reactormonk Ich denke du solltest es eine Antwort geben. – zero323

+0

@ zero323 'Seq' und' WrappedArray' funktionieren. Sehen Sie einen Grund, einen über den anderen zu benutzen? Mehr an Leistung als an Nutzung interessiert. – BAR

Antwort

16

Funktioniert row.getAs[Seq[String]]("result")?

+2

Scheint wie Spark ein implizites für diesen Fall verwenden könnte. Wenn ich eine Chance bekomme, werde ich es überprüfen und PR einreichen. – BAR

+0

@BAR hast du eine PR eingereicht oder ein Ticket eingereicht? Ich habe keinen einzigen Treffer gesehen und bin mit 1.6.1 dabei – placeybordeaux