Есть несколько вещей, которые вы можете сделать на этом фронте, о которых я могу подумать.
Если ваша работа содержит несколько действий, вы можете написать скрипт для опроса ожидаемых результатов этих действий. Например, представьте, что в вашем скрипте 4 различных DataFrame вызова вызовов. Вы можете провести опрос сценариев статуса HDFS / S3 , чтобы увидеть, обнаружились ли данные в ожидаемом месте вывода. Другой пример: я использовал Spark для индексации ElasticSearch , и я записал в журнал состояния статус для опроса количества записей в индексе для печати периодического прогресса.
Еще одна вещь, которую я пробовал ранее, - это использовать Аккумуляторы , чтобы попытаться следить за прогрессом и объемом записанных данных. Это работает нормально, но это немного произвольно, когда Spark обновляет видимые итоги информацией от исполнителей, поэтому я не считаю, что это слишком полезно для этой цели.
Другой подход, который вы можете использовать, - это опрос API статуса и статуса Spark напрямую. Вы сможете вытянуть всю информацию, поддерживающую интерфейс Spark, в свой код и делать с ней все, что захотите. Это не обязательно скажет вам точно, где вы находитесь в вашем коде драйвера, но если вы вручную выясните, как ваш драйвер соответствует этапам, вы можете понять это. Для справки, вот документация по опросу API статуса:
https://spark.apache.org/docs/latest/monitoring.html#rest-api