栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Exception in thread “main“ java.lang.IllegalArgumentException

Exception in thread “main“ java.lang.IllegalArgumentException

做向量字符串转换向量的时候运行spark程序,一直报以下错误。

Exception in thread "main" java.lang.IllegalArgumentException: requirement failed: Column feature_vec must be of type struct,values:array> but was actually struct,values:array>.
        at scala.Predef$.require(Predef.scala:224)
        at org.apache.spark.ml.util.SchemaUtils$.checkColumnType(SchemaUtils.scala:43)
        at org.apache.spark.ml.PredictorParams$class.validateAndTransformSchema(Predictor.scala:51)
        at org.apache.spark.ml.classification.Classifier.org$apache$spark$ml$classification$ClassifierParams$$super$validateAndTransformSchema(Classifier.scala:58)
        at org.apache.spark.ml.classification.ClassifierParams$class.validateAndTransformSchema(Classifier.scala:42)

其实原因是spark版本的问题。我的spark是2.4.5的版本,其实是不能使用mllib包里面的方法,反正就是版本不兼容。

我原先导的包

import org.apache.spark.mllib.linalg.Vectors

 原先的代码是这个

 val string2vector = (x:String) => Vectors.parse(x)

 其实导包不能导milib,只能导ml

我的包的修改:

import org.apache.spark.ml.util._

代码的修改

val string2vector = (x:String) => org.apache.spark.mllib.linalg.Vectors.parse(x).asML

我之前尝试过把 import org.apache.spark.mllib.linalg.Vectors换成import org.apache.spark.ml.linalg.Vectors,但是发现这两个包中的方法不一样。

归根结底还是对java中的向量的方法不太熟悉。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/784586.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号