You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@spark.apache.org by Sultan Alamro <su...@gmail.com> on 2019/09/21 00:26:25 UTC

Spark Tasks Progress

Hi all,

I am trying to do some actions at the Driver side in Spark while an
application is running. The Driver needs to know the tasks progress before
making any decision. I know that tasks progress can be accessed within each
executor or task from RecordReader class by calling getProgress().

The question is, how can I let the Driver call or have an access to
getProgress() method of each task? I thought about using broadcast and
accumulator
variables, but I don't know how the Driver would distinguish between
different tasks.

Note that I am not looking for results displayed in Spark UI.

Any help is appreciated!

RE: Spark Tasks Progress

Posted by Ilya Matiach <il...@microsoft.com.INVALID>.
@Sultan Alamro<ma...@gmail.com> great question.  I had a similar scenario, where workers needed to aggregate host:port information for initializing an MPI ring, and I used direct socket communication between the workers and driver.

This is where the driver accepts sockets from workers:
https://github.com/Azure/mmlspark/blob/master/src/main/scala/com/microsoft/ml/spark/lightgbm/LightGBMUtils.scala#L125

And this is where the workers send information to the driver:
https://github.com/Azure/mmlspark/blob/master/src/main/scala/com/microsoft/ml/spark/lightgbm/TrainUtils.scala#L347

You could probably do something similar, and send the partitionId or some other id to the driver.

Hope this helps!
Thank you, Ilya


From: Sultan Alamro <su...@gmail.com>
Sent: Friday, September 20, 2019 8:26 PM
To: dev@spark.apache.org
Subject: Spark Tasks Progress

Hi all,

I am trying to do some actions at the Driver side in Spark while an application is running. The Driver needs to know the tasks progress before making any decision. I know that tasks progress can be accessed within each executor or task from RecordReader class by calling getProgress().

The question is, how can I let the Driver call or have an access to getProgress() method of each task? I thought about using broadcast and accumulator variables, but I don't know how the Driver would distinguish between different tasks.

Note that I am not looking for results displayed in Spark UI.

Any help is appreciated!