You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@spark.apache.org by "Joseph K. Bradley (JIRA)" <ji...@apache.org> on 2018/05/01 21:53:00 UTC

[jira] [Comment Edited] (SPARK-23686) Make better usage of org.apache.spark.ml.util.Instrumentation

    [ https://issues.apache.org/jira/browse/SPARK-23686?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16460164#comment-16460164 ] 

Joseph K. Bradley edited comment on SPARK-23686 at 5/1/18 9:52 PM:
-------------------------------------------------------------------

[~yogeshgarg] and [~WeichenXu123] made the good point that some logging occurs on executors.  This brings up the question:
* Should we use Instrumentation on executors?
* What levels of logging should we use on executors (in MLlib algorithms)?

I figure it's safe to assume that executor logs should be more for developers than for users.  (Current use in MLlib seems like this, e.g., for training of trees in https://github.com/apache/spark/pull/21163 )  These all seem to be at the DEBUG level, which is not really useful for users.

Given that, I recommend:
* We leave Instrumentation non-Serializable to avoid use on executors
* We use regular Logging on executors.

Developers who are debugging algorithms will presumably be running pretty isolated tests anyways.


was (Author: josephkb):
[~yogeshgarg] made the good point that we should not convert all uses of Logging to use Instrumentation: if logging happens on executors, then we should not use the (non-serializable) Instrumentation class.  E.g.: https://github.com/apache/spark/blob/6782359a04356e4cde32940861bf2410ef37f445/mllib/src/main/scala/org/apache/spark/ml/recommendation/ALS.scala#L1587
Also, these instances all seem to be at the DEBUG level, which is not really useful for users.

> Make better usage of org.apache.spark.ml.util.Instrumentation
> -------------------------------------------------------------
>
>                 Key: SPARK-23686
>                 URL: https://issues.apache.org/jira/browse/SPARK-23686
>             Project: Spark
>          Issue Type: Improvement
>          Components: ML
>    Affects Versions: 2.3.0
>            Reporter: Bago Amirbekian
>            Priority: Major
>
> This Jira is a bit high level and might require subtasks or other jiras for more specific tasks.
> I've noticed that we don't make the best usage of the instrumentation class. Specifically sometimes we bypass the instrumentation class and use the debugger instead. For example, [https://github.com/apache/spark/blob/9b9827759af2ca3eea146a6032f9165f640ce152/mllib/src/main/scala/org/apache/spark/ml/tree/impl/RandomForest.scala#L143]
> Also there are some things that might be useful to log in the instrumentation class that we currently don't. For example:
> number of training examples
> mean/var of label (regression)
> I know computing these things can be expensive in some cases, but especially when this data is already available we can log it for free. For example, Logistic Regression Summarizer computes some useful data including numRows that we don't log.
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@spark.apache.org
For additional commands, e-mail: issues-help@spark.apache.org