You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@spark.apache.org by "Sean Owen (JIRA)" <ji...@apache.org> on 2017/01/07 12:46:58 UTC

[jira] [Updated] (SPARK-19114) Backpressure could support non-integral rates (< 1)

     [ https://issues.apache.org/jira/browse/SPARK-19114?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Sean Owen updated SPARK-19114:
------------------------------
      Priority: Minor  (was: Major)
    Issue Type: Improvement  (was: Bug)
       Summary: Backpressure could support non-integral rates (< 1)  (was: Backpressure rate is cast from double to long to double)

I think the assumption that it's a long (therefore, at least 1 event per second) is embedded throughout this code; it's not just one instance of casting to a long.

It does sound like quite a corner case though, using Spark Streaming to process well under 1 event per second. Is it really a streaming use case?

That's not to say it couldn't be fixed but would take some surgery.

> Backpressure could support non-integral rates (< 1)
> ---------------------------------------------------
>
>                 Key: SPARK-19114
>                 URL: https://issues.apache.org/jira/browse/SPARK-19114
>             Project: Spark
>          Issue Type: Improvement
>            Reporter: Tony Novak
>            Priority: Minor
>
> We have a Spark streaming job where each record takes well over a second to execute, so the stable rate is under 1 element/second. We set spark.streaming.backpressure.enabled=true and spark.streaming.backpressure.pid.minRate=0.1, but backpressure did not appear to be effective, even though the TRACE level logs from PIDRateEstimator showed that the new rate was 0.1.
> As it turns out, even though the minRate parameter is a Double, and the rate estimate generated by PIDRateEstimator is a Double as well, RateController casts the new rate to a Long. As a result, if the computed rate is less than 1, it's truncated to 0, which ends up being interpreted as "no limit".
> What's particularly confusing is that the Guava RateLimiter class takes a rate limit as a double, so the long value ends up being cast back to a double.
> Is there any reason not to keep the rate limit as a double all the way through? I'm happy to create a pull request if this makes sense.
> We encountered the bug on Spark 1.6.2, but it looks like the code in the master branch is still affected.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

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