This repository was archived by the owner on May 9, 2024. It is now read-only.
File tree Expand file tree Collapse file tree 5 files changed +38
-8
lines changed
mllib/src/main/scala/org/apache/spark/mllib/export Expand file tree Collapse file tree 5 files changed +38
-8
lines changed Original file line number Diff line number Diff line change @@ -21,6 +21,9 @@ import java.io.OutputStream
2121
2222trait ModelExport {
2323
24+ /**
25+ * Write the exported model to the output stream specified
26+ */
2427 def save (outputStream : OutputStream ): Unit
2528
2629}
Original file line number Diff line number Diff line change @@ -19,14 +19,22 @@ package org.apache.spark.mllib.export
1919
2020import org .apache .spark .mllib .clustering .KMeansModel
2121import org .apache .spark .mllib .export .pmml .KMeansPMMLModelExport
22+ import org .apache .spark .mllib .export .ModelExportType ._
2223
2324object ModelExportFactory {
2425
25- // TODO: introduce model export typed
26-
27- def createModelExport (model : Any ): ModelExport = model match {
28- case kmeans : KMeansModel => new KMeansPMMLModelExport
29- case _ => throw new IllegalArgumentException (" Export not supported for model " + model.getClass)
26+ /**
27+ * Factory object to help creating the necessary ModelExport implementation
28+ * taking as input the ModelExportType (for example PMML) and the machine learning model (for example KMeansModel).
29+ */
30+ def createModelExport (model : Any , exportType : ModelExportType ): ModelExport = {
31+ return exportType match {
32+ case PMML => model match {
33+ case kmeans : KMeansModel => new KMeansPMMLModelExport (kmeans)
34+ case _ => throw new IllegalArgumentException (" Export not supported for model: " + model.getClass)
35+ }
36+ case _ => throw new IllegalArgumentException (" Export type not supported:" + exportType)
37+ }
3038 }
3139
3240}
Original file line number Diff line number Diff line change 1717
1818package org .apache .spark .mllib .export
1919
20+ /**
21+ * Defines export types.
22+ * - PMML exports the machine learning models in an XML-based file format called Predictive Model Markup Language developed by the Data Mining Group (www.dmg.org).
23+ */
2024object ModelExportType extends Enumeration {
2125
2226 type ModelExportType = Value
Original file line number Diff line number Diff line change 1717
1818package org .apache .spark .mllib .export .pmml
1919
20- class KMeansPMMLModelExport extends PMMLModelExport {
20+ import org . apache . spark . mllib . clustering . KMeansModel
2121
22- populateKMeansPMML();
22+ /**
23+ * PMML Model Export for KMeansModel class
24+ */
25+ class KMeansPMMLModelExport (model : KMeansModel ) extends PMMLModelExport {
26+
27+ /**
28+ * Export the input KMeansModel model to PMML format
29+ */
30+ populateKMeansPMML(model);
2331
24- def populateKMeansPMML (): Unit = {
32+ private def populateKMeansPMML (model : KMeansModel ): Unit = {
2533 // TODO: set here header description
2634 pmml.setVersion(" testing... kmeans..." );
2735 // TODO: generate the model...
Original file line number Diff line number Diff line change @@ -26,10 +26,17 @@ import scala.beans.BeanProperty
2626
2727trait PMMLModelExport extends ModelExport {
2828
29+ /**
30+ * Holder of the exported model in PMML format
31+ */
2932 @ BeanProperty
3033 var pmml : PMML = new PMML ();
3134 // TODO: set here header app copyright and timestamp
3235
36+ /**
37+ * Write the exported model (in PMML XML) to the output stream specified
38+ */
39+ @ Override
3340 def save (outputStream : OutputStream ): Unit = {
3441 JAXBUtil .marshalPMML(pmml, new StreamResult (outputStream));
3542 }
You can’t perform that action at this time.
0 commit comments