Github user freeman-lab commented on a diff in the pull request:
https://github.com/apache/spark/pull/5037#discussion_r26520257
--- Diff:
mllib/src/main/scala/org/apache/spark/mllib/regression/StreamingLinearAlgorithm.scala
---
@@ -114,7 +114,7 @@ abstract class StreamingLinearAlgorithm[
if (model.isEmpty) {
throw new IllegalArgumentException("Model must be initialized before
starting prediction.")
}
- data.map(model.get.predict)
--- End diff --
Ah! Thanks Xiangrui, not sure how this slipped in.
But even with this change, declaring model = None in the superclass is
still a problem. With that declaration, and this change, we get a `None.get`
exception during any predictions. Curiously, if we replace the
`data.mapValues(x => model.get.predict(x))` with the following:
```
data.transform{rdd =>
val latest = model.get
rdd.mapValues(x => latest.predict(x))
}
```
It works in a running example (test data reflects updated model), but fails
in the new unit tests (that might be a race condition).
With the subclass shadowing, it works in all cases. So I do think we need
both.
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]