Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Incomplete
-
2.0.0
-
None
-
Spark 2.0.0
Java API
Description
0. Use Java API
1. Create any custom ML transformer
2. Make it MLReadable and MLWritable
3. Add to pipeline
4. Evaluate model, e.g. CrossValidationModel, and save results to disk
5. For custom transformer you can use DefaultParamsReader and DefaultParamsWriter, for instance
6. Load model from saved directory
7. All out-of-the-box objects are loaded successfully, e.g. Pipeline, Evaluator, etc.
8. Your custom transformer will fail with NPE
Reason:
ReadWrite.scala:447
cls.getMethod("read").invoke(null).asInstanceOf[MLReader[T]].load(path)
In Java this only works for static methods.
As we are implementing MLReadable or MLWritable, then this call should be instance method call.
Attachments
Issue Links
- relates to
-
SPARK-19498 Discussion: Making MLlib APIs extensible for 3rd party libraries
- Resolved