2015-10-18 9 views
7

Ho salvato uno Array[String] in un file di Parquet da Spark.Leggi matrice di stringa da Spark

Per leggerlo io uso:

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

Ma ottengo:

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

Qui è il risultato di printSchema():

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

Come dovrebbe getAs() essere modificato?

+5

Il comando 'row.getAs [Seq [String]] (" result ")' funziona? – Reactormonk

+0

Oppure 'row.getAs [scala.collection.mutable.WrappedArray [String]] (" risultato ")'. @Reactormonk Penso che dovresti renderlo una risposta. – zero323

+0

@ zero323 'Seq' e' WrappedArray' funzionano. Vedi qualche motivo per usarne uno sull'altro? Più interessati alle prestazioni rispetto all'utilizzo. – BAR

risposta

16

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

+2

Sembra che Spark potrebbe usare un implicito per questo caso. Se avrò la possibilità, verificherò e invierò PR. – BAR

+0

@BAR hai finito con l'invio di un PR o di un deposito? Non ne ho visto uno da pipistrello e sono rimasto solo un po 'per questo con 1.6.1 – placeybordeaux