2015-10-18 310 views
7

我將一個Array[String]保存到Spark的Parquet文件中。從Spark中讀取字符串數組

要閱讀它,我用:

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

但得到:

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

這裏是printSchema()結果:

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

應如何getAs()修改?

+5

'row.getAs [Seq [String]](「result」)'工作嗎? – Reactormonk

+0

或'row.getAs [scala.collection.mutable.WrappedArray [String]](「result」)''。 @Reactormonk我認爲你應該讓它成爲一個答案。 – zero323

+0

@ zero323'Seq'和'WrappedArray'工作。你有沒有看到任何理由使用其中一個?對性能比對使用更感興趣。 – BAR

回答

16

row.getAs[Seq[String]]("result")是否工作?

+2

看起來像Spark可以使用隱式的這種情況。如果我有機會將檢查出來並提交PR。 – BAR

+0

@BAR是否最終提交了PR或申請了機票?我沒有看到一個蝙蝠,我剛剛在1.6.1中獲得了這一點 – placeybordeaux