2015-10-18 100 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