Я заметил, что моя программа 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.
Надеюсь, теперь все стало понятнее ...