You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by se...@apache.org on 2015/05/12 14:01:32 UTC
[4/7] flink git commit: [FLINK-2001] [ml] Fix DistanceMetric
serialization error
[FLINK-2001] [ml] Fix DistanceMetric serialization error
This closes #668
Project: http://git-wip-us.apache.org/repos/asf/flink/repo
Commit: http://git-wip-us.apache.org/repos/asf/flink/commit/40683718
Tree: http://git-wip-us.apache.org/repos/asf/flink/tree/40683718
Diff: http://git-wip-us.apache.org/repos/asf/flink/diff/40683718
Branch: refs/heads/master
Commit: 40683718db2233293ee932317102a399ad60a912
Parents: 318a14d
Author: Chiwan Park <ch...@icloud.com>
Authored: Tue May 12 15:11:25 2015 +0900
Committer: Stephan Ewen <se...@apache.org>
Committed: Tue May 12 14:00:49 2015 +0200
----------------------------------------------------------------------
.../ml/metrics/distances/DistanceMetric.scala | 2 +-
.../metrics/distances/DistanceMetricSuite.scala | 20 +++++++++++++++++++-
2 files changed, 20 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flink/blob/40683718/flink-staging/flink-ml/src/main/scala/org/apache/flink/ml/metrics/distances/DistanceMetric.scala
----------------------------------------------------------------------
diff --git a/flink-staging/flink-ml/src/main/scala/org/apache/flink/ml/metrics/distances/DistanceMetric.scala b/flink-staging/flink-ml/src/main/scala/org/apache/flink/ml/metrics/distances/DistanceMetric.scala
index 1297ffb..21573fe 100644
--- a/flink-staging/flink-ml/src/main/scala/org/apache/flink/ml/metrics/distances/DistanceMetric.scala
+++ b/flink-staging/flink-ml/src/main/scala/org/apache/flink/ml/metrics/distances/DistanceMetric.scala
@@ -22,7 +22,7 @@ import org.apache.flink.ml.math.Vector
/** DistanceMeasure interface is used for object which determines distance between two points.
*/
-trait DistanceMetric {
+trait DistanceMetric extends Serializable {
/** Returns the distance between the arguments.
*
* @param a a Vector defining a multi-dimensional point in some space
http://git-wip-us.apache.org/repos/asf/flink/blob/40683718/flink-staging/flink-ml/src/test/scala/org/apache/flink/ml/metrics/distances/DistanceMetricSuite.scala
----------------------------------------------------------------------
diff --git a/flink-staging/flink-ml/src/test/scala/org/apache/flink/ml/metrics/distances/DistanceMetricSuite.scala b/flink-staging/flink-ml/src/test/scala/org/apache/flink/ml/metrics/distances/DistanceMetricSuite.scala
index 569a1a8..1168d7f 100644
--- a/flink-staging/flink-ml/src/test/scala/org/apache/flink/ml/metrics/distances/DistanceMetricSuite.scala
+++ b/flink-staging/flink-ml/src/test/scala/org/apache/flink/ml/metrics/distances/DistanceMetricSuite.scala
@@ -18,8 +18,10 @@
package org.apache.flink.ml.metrics.distances
+import java.io.{ByteArrayInputStream, ByteArrayOutputStream, ObjectInputStream, ObjectOutputStream}
+
import org.apache.flink.ml.math.DenseVector
-import org.scalatest.{Matchers, FlatSpec}
+import org.scalatest.{FlatSpec, Matchers}
class DistanceMetricSuite extends FlatSpec with Matchers {
val EPSILON = 1e-8
@@ -74,4 +76,20 @@ class DistanceMetricSuite extends FlatSpec with Matchers {
TanimotoDistanceMetric().distance(vec1, vec2) should be(1 - (1.0 / (2 + 2 - 1)) +- EPSILON)
}
+
+ it should "be serialized" in {
+ val metric = EuclideanDistanceMetric()
+ val byteOutput = new ByteArrayOutputStream()
+ val output = new ObjectOutputStream(byteOutput)
+
+ output.writeObject(metric)
+ output.close()
+
+ val byteInput = new ByteArrayInputStream(byteOutput.toByteArray)
+ val input = new ObjectInputStream(byteInput)
+
+ val restoredMetric = input.readObject().asInstanceOf[DistanceMetric]
+
+ restoredMetric should be(an[EuclideanDistanceMetric])
+ }
}