Spark使用Java开发遇到的那些类型错误

Spark使用Java开发其实比较方便的,JAVA8的lambda表达式使得编写体验并不比Scala差很多,但是因为Spark本身使用Scala实现,导致使用Java开发的时候,也遇到不少的类型匹配问题。

本文列举出自己在工作开发中遇到的一些问题,供大家参考:

WrappedArray和Vector

报错信息为:Caused by: java.lang.ClassCastException: scala.collection.mutable.WrappedArray$ofRef cannot be cast to org.apache.spark.ml.linalg.Vector

当使用DataFrame打印Schema的时候,是这样的输出:

 

这时候如果Java用Vector接收,就会报这个错误,JAVA代码为:

解决办法是使用WrappedArray<Long>来接收,这是个scala的类型,可以用Iterator做遍历:

或者可以zip两个iterator进行计算:

 

详细内容见scala的文档:https://docs.scala-lang.org/overviews/collections/iterators.html

 

相关推荐

发表评论

电子邮件地址不会被公开。 必填项已用*标注