flinkml:连接labeledvector的数据集不起作用

5f0d552i  于 2021-06-24  发布在  Flink
关注(0)|答案(1)|浏览(330)

我目前正在尝试连接两个数据集(Flink0.10-SnapshotAPI的一部分)。两个数据集的形式相同:

predictions:
6.932018685453303E155 DenseVector(0.0, 1.4, 1437.0)

org:
2.0 DenseVector(0.0, 1.4, 1437.0)

general form:
LabeledVector(Double, DenseVector(Double,Double,Double))

我要创建的是一个新的数据集[(double,double)],只包含两个数据集的标签,即:

join:
6.932018685453303E155 2.0

因此,我尝试了以下命令:

val join = org.join(predictions).where(0).equalTo(0){
  (l, r) => (l.label, r.label)
}

但结果是“join”为空。我错过什么了吗?

798qvoo8

798qvoo81#

您正在加入labeledvector类型的label字段(索引0),即,使用匹配的标签构建所有元素对。你的例子表明你想要加入向量场。
但是,在向量场上连接,例如通过调用:

org.join(predictions).where("vector").equalTo("vector"){
  (l, r) => (l.label, r.label)
}

行不通,因为 DenseVector 向量场的类型,不能被flink识别为键类型(如各种数组)。
till在下面的注解中描述了如何比较预测值和标签值。

相关问题