Асинхронное выполнение scala-программы в spark-submit - PullRequest
0 голосов
/ 23 ноября 2018

Я заметил, что моя программа scala не работает должным образом.

По сути, она соединяется с помощью jdbc с одной базой данных и вызывает одну хранимую процедуру, которая загружает таблицу, например, с 1000 строками.(один за другим).

Следующим шагом в моей программе Scala является чтение этой таблицы и выполнение некоторых вычислений.Вот где возникает проблема, потому что он читает меньше строк (например, около 30) вместо 1000.

Это, очевидно, указывает на то, что распределение приложения в кластер искрой не ожидает должным образом, чтобы позволитьSP заканчивает свою работу, и он выполняет следующую инструкцию раньше, чем ожидалось.

Я добавил Thread.sleep(10000), и ситуация улучшается, но мне совсем не нравится использовать этот обходной путь для решения этой проблемы.

Я также пытался выполнить приложение только с одним исполнителем, и проблема не устранена.

У кого-то из вас, ребята, тоже была эта проблема?Как вы решили это?

Заранее спасибо


Пример кода:

// sp which generates 1000 records in one table in database
mMeta.getConnection().prepareCall("{call " + mMeta.getDatabaseName + ".[dbo].SP_Create1000rows}")

// method which grabs the rows from database created in previous code
Process1000rows()

Метод Process1000rows получает около 40 строк, потому что он не ожидаетхранимая процедура должна быть выполнена.

Однако, если я добавлю Thread.sleep(10000) между обеими инструкциями, метод получит 1000 строк, сгенерированных SP.

Надеюсь, теперь все стало понятнее ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...