spark(scala)三个分离的rdd [org.apache.spark.mllib.linalg.Vector]到单个rdd [Vector]

时间:2016-12-01 13:10:50

标签: scala apache-spark vector apache-spark-mllib

我有三个独立的rdd [mllib ....向量],我需要将它们组合成一个rdd [mllib向量]。

val vvv = my_ds.map(x=>(scaler.transform(Vectors.dense(x(0))),Vectors.dense((x(1)/bv_max_2).toArray),Vectors.dense((x(2)/bv_max_1).toArray)))

更多信息: scaler => StandardScaler bv_max _...只是来自breeze的DenseVector,以便进行规范化(x / max(x))

现在我需要将它们全部整合在一起 我得到([1。],[2。],[3。])和[[1。],[2。],[3。]] 但我需要[1.,2.,3。]作为一个载体

1 个答案:

答案 0 :(得分:0)

最后我发现......我不知道这是否是最好的。

我有三维数据集,我需要在两个维度上执行x / max(x)规范化,并将standardScaler应用到另一个维度。 我的问题是,最后我有3个分开的矢量,例如: [[1.0],[4,0],[5.0]] [[2.0],[5.0],[6.0]] ................但我需要[1.0,4.0,5.0],可以传递给KMeans。 我将上面的代码更改为:

val vvv = dsx.map(x=>scaler.transform(Vectors.dense(x.days_d)).toArray ++ (x.freq_d/bv_max_freq).toArray ++ (x.food_d/bv_max_food).toArray).map(x=>Vectors.dense(x(0),x(1),x(2)))