Я пробовал все возможные подходы к stackoverflow, но не смог решить эту проблему. Я пытаюсь найти время для следующей операции:
long startTime=System.currentTimeMillis()
Dataset<Row> readDataFrame= spark.read()
.format("jdbc")
.option("url", drivingUrl)
.option("dbtable", drivingQuery)
.option("driver", driver)
.load();
long endTime=System.currentTimeMillis();
Это дает неверные результаты из-за ленивого выполнения искры. У меня не может быть отдельного действия для этого, так как оно у меня уже есть в конце заявки. Добавление большего количества увеличит стоимость производительности.
Подходы, которые я пробовал
1) Я пробовал другие подходы, такие как spark.time () et c, но они дает неверные результаты из-за ленивого выполнения искры.
2) Я также изучал различные методы в слушателе, но большинство из них были для этапов / заданий. Есть onOtherEvent, но он дает мне все события, которые происходят внутри него, и это тоже стадия для постановки. Кроме того, я попытался использовать SQL Listener, но для этого вам нужно знать идентификатор исполнителя, который, я думаю, мы не можем знать, поскольку это искра, которая выделяет исполнителей.
3) Я пробовал использовать QueryExecutionListener но это дает мне все сценическое время, которого я не хочу. Мне нужно время только для загрузки вышеуказанного.
Кто-нибудь может мне помочь? Я очень новичок в концепции слушателей, и я не могу найти в Интернете каких-либо хороших ресурсов для моей цели.