Асинхронно запускать вызов DBAPI в приложении Pyspark - PullRequest
0 голосов
/ 22 мая 2018

У меня есть приложение, которое создает несколько фреймов данных, записывает их на диск, а затем запускает команду, используя vertica_python для загрузки данных в Vertica.Разъем Spark Vertica не работает из-за зашифрованного диска.

Я хотел бы, чтобы приложение запустило команду для загрузки данных, а затем сразу же перешло к следующему заданию.Однако он ждет, пока нагрузка будет выполнена в Vertica, прежде чем перейти к следующей работе.Как я могу сделать это, что я хочу?Спасибо.

Что странно в этой проблеме, так это то, что команда, которую я хотел бы запустить в фоновом режиме, так же проста, как db_client.cursor.execute(command).Это не должно блокировать в нормальных условиях, так почему же это в Spark?

Если быть точным, то происходит то, что я читаю в фрейме данных, делаю преобразования, пишу в s3, а затемЯ хотел бы начать работу с БД, загружая файлы из s3, прежде чем переходить к преобразованному файлу данных, преобразовывать его снова, писать в s3, загружать в БД .... несколько раз.

1 Ответ

0 голосов
/ 23 мая 2018

Теперь я понимаю, что я делал.Простого помещения вызова dbapi в собственный поток недостаточно.Остальные вызовы, которые я хочу запускать, должны также помещаться в их собственные потоки.

...