2

我目前正在尝试加入两个数据集(flink 0.10-SNAPSHOT API 的一部分)。两个 DataSet 具有相同的形式:

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))

我要创建的是一个新的 DataSet[(Double,Double)] 只包含两个 DataSet 的标签,即:

join:
6.932018685453303E155 2.0

因此我尝试了以下命令:

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

但结果“加入”是空的。我错过了什么吗?

4

1 回答 1

3

您正在加入 LabeledVector 类型的标签字段(索引 0),即构建具有匹配标签的所有元素对。您的示例表明您想加入向量场。

但是,加入向量场,例如通过调用:

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

不会起作用,因为DenseVector向量字段的类型,Flink 不将其识别为键类型(例如各种数组)。

Till 在下面的评论中描述了如何比较预测值和标签值。

于 2015-08-13T12:06:35.250 回答