diff --git a/dev/sparktestsupport/modules.py b/dev/sparktestsupport/modules.py
index bb04ec6ee67d..c844bcff7e4f 100644
--- a/dev/sparktestsupport/modules.py
+++ b/dev/sparktestsupport/modules.py
@@ -256,9 +256,21 @@ def __hash__(self):
)
+mllib_local = Module(
+ name="mllib-local",
+ dependencies=[],
+ source_file_regexes=[
+ "mllib-local",
+ ],
+ sbt_test_goals=[
+ "mllib-local/test",
+ ]
+)
+
+
mllib = Module(
name="mllib",
- dependencies=[streaming, sql],
+ dependencies=[mllib_local, streaming, sql],
source_file_regexes=[
"data/mllib/",
"mllib/",
diff --git a/mllib-local/pom.xml b/mllib-local/pom.xml
new file mode 100644
index 000000000000..c56561f21592
--- /dev/null
+++ b/mllib-local/pom.xml
@@ -0,0 +1,87 @@
+
+
+
+
+ 4.0.0
+
+ org.apache.spark
+ spark-parent_2.11
+ 2.0.0-SNAPSHOT
+ ../pom.xml
+
+
+ org.apache.spark
+ spark-mllib-local_2.11
+
+ mllib-local
+
+ jar
+ Spark Project ML Local Library
+ http://spark.apache.org/
+
+
+
+ org.scalanlp
+ breeze_${scala.binary.version}
+ 0.11.2
+
+
+
+ junit
+ junit
+
+
+ org.apache.commons
+ commons-math3
+
+
+
+
+ org.apache.commons
+ commons-math3
+
+
+ org.scalacheck
+ scalacheck_${scala.binary.version}
+ test
+
+
+ org.mockito
+ mockito-core
+ test
+
+
+
+
+ netlib-lgpl
+
+
+ com.github.fommil.netlib
+ all
+ ${netlib.java.version}
+ pom
+
+
+
+
+
+ target/scala-${scala.binary.version}/classes
+ target/scala-${scala.binary.version}/test-classes
+
+
diff --git a/mllib-local/src/main/scala/org/apache/spark/ml/DummyTesting.scala b/mllib-local/src/main/scala/org/apache/spark/ml/DummyTesting.scala
new file mode 100644
index 000000000000..6b3268cdfa25
--- /dev/null
+++ b/mllib-local/src/main/scala/org/apache/spark/ml/DummyTesting.scala
@@ -0,0 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.spark.ml
+
+// This is a private class testing if the new build works. To be removed soon.
+private[ml] object DummyTesting {
+ private[ml] def add10(input: Double): Double = input + 10
+}
diff --git a/mllib-local/src/test/scala/org/apache/spark/ml/DummyTestingSuite.scala b/mllib-local/src/test/scala/org/apache/spark/ml/DummyTestingSuite.scala
new file mode 100644
index 000000000000..51b7c2409ff2
--- /dev/null
+++ b/mllib-local/src/test/scala/org/apache/spark/ml/DummyTestingSuite.scala
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.spark.ml
+
+import org.scalatest.FunSuite // scalastyle:ignore funsuite
+
+// This is testing if the new build works. To be removed soon.
+class DummyTestingSuite extends FunSuite { // scalastyle:ignore funsuite
+
+ test("This is testing if the new build works.") {
+ assert(DummyTesting.add10(15) === 25)
+ }
+}
diff --git a/mllib/pom.xml b/mllib/pom.xml
index 428176dcbfad..e56eafc3006b 100644
--- a/mllib/pom.xml
+++ b/mllib/pom.xml
@@ -62,6 +62,18 @@
spark-graphx_${scala.binary.version}
${project.version}
+
+ org.apache.spark
+ spark-mllib-local_${scala.binary.version}
+ ${project.version}
+
+
+ org.apache.spark
+ spark-mllib-local_${scala.binary.version}
+ ${project.version}
+ test-jar
+ test
+
org.scalanlp
breeze_${scala.binary.version}
diff --git a/pom.xml b/pom.xml
index 1b40983a6c97..d715acaf681d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -94,6 +94,7 @@
core
graphx
mllib
+ mllib-local
tools
streaming
sql/catalyst
diff --git a/project/SparkBuild.scala b/project/SparkBuild.scala
index 60124ef0a13b..c5688ecec65d 100644
--- a/project/SparkBuild.scala
+++ b/project/SparkBuild.scala
@@ -47,9 +47,9 @@ object BuildCommons {
).map(ProjectRef(buildLocation, _))
val allProjects@Seq(
- core, graphx, mllib, repl, networkCommon, networkShuffle, launcher, unsafe, testTags, sketch, _*
+ core, graphx, mllib, mllibLocal, repl, networkCommon, networkShuffle, launcher, unsafe, testTags, sketch, _*
) = Seq(
- "core", "graphx", "mllib", "repl", "network-common", "network-shuffle", "launcher", "unsafe",
+ "core", "graphx", "mllib", "mllib-local", "repl", "network-common", "network-shuffle", "launcher", "unsafe",
"test-tags", "sketch"
).map(ProjectRef(buildLocation, _)) ++ sqlProjects ++ streamingProjects
@@ -254,7 +254,7 @@ object SparkBuild extends PomBuild {
val mimaProjects = allProjects.filterNot { x =>
Seq(
spark, hive, hiveThriftServer, catalyst, repl, networkCommon, networkShuffle, networkYarn,
- unsafe, testTags, sketch
+ unsafe, testTags, sketch, mllibLocal
).contains(x)
}