如何做Spark 版本兼容

 我来答
絕戀包
2017-03-14 · TA获得超过233个赞
知道答主
回答量:359
采纳率:0%
帮助的人:94.7万
展开全部
在Spark 1.6 时,大部分机器学习相关的类使用的向量还是
org.apache.spark.mllib.linalg.Vector

而到2.0后,已经基本都变更成
org.apache.spark.ml.linalg.Vector

同理对应的Vectors object 也是。这就造成了一个比较大的困难,比如下面的代码就很难做到兼容了,切换Spark就无法通过编译:
//定义一个函数,将一个字符串转化为Vector
val t = udf { (features: String) =>

if (!features.contains(":")) {
val v = features.split(",|\\s+").map(_.toDouble)
Vectors.dense(v)
} else {
val v = features.split(",|\\s+").map(_.split(":")).map(f => (f(0).toInt, f(1).toDouble))
Vectors.sparse(vectorSize, v)
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式