Hi,

I have some doubts about dynamic resource allocation with spark streaming.

If spark had allocated 5 executors for me, then he would dispatch every
batch tasks on all of them equally. So if batchSize <
spark.dynamicAllocation.executorIdleTimeout
then spark will never free any executor. Moreover to free executor the
processing time of batch must be lower than (batchSize -
spark.dynamicAllocation.executorIdleTimeout),
e.g. for
batchSize = 30s
spark.dynamicAllocation.executorIdleTimeout = 25s
my batch should be processed under 5 seconds to free executors.

If everything I have written above is true, it is not so great mechanism,
because I would like to free an executor, for example, when processing time
was lower than batchSize/2. I can set
spark.dynamicAllocation.executorIdleTimeout
to batchSize/2 but then spark will probably free all my executors...

Have anyone worked out some sensible solution to this problem?

Reply via email to