Использование слушателей для расчета времени загрузки базы данных в Spark - PullRequest
2 голосов
/ 07 мая 2020

Я пробовал все возможные подходы к 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 но это дает мне все сценическое время, которого я не хочу. Мне нужно время только для загрузки вышеуказанного.

Кто-нибудь может мне помочь? Я очень новичок в концепции слушателей, и я не могу найти в Интернете каких-либо хороших ресурсов для моей цели.

...