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]

Reply via email to