Запись данных Spark в базу данных (Exasol) с помощью jdbc slow - PullRequest
0 голосов
/ 05 декабря 2018

Я читаю из AWS (s3) и записываю в базу данных (exasol), занимая слишком много времени, даже если настройка размера пакета не влияет на производительность.Я пишу 6,18 млн строк (около 3,5 ГБ), занимая 17 минут

, работая в режиме кластера. 20 узлов кластера

, как я могу сделать это быстро

Набор данных ds = session.read() .parquet (s3Path)

ds.write (). format ("jdbc"). option ("user", username) .option ("пароль", пароль) .option ("драйвер",Conf.DRIVER) .option ("url", dbURL) .option ("dbtable", exasolTableName) .option ("пакетный размер", 50000) .mode (SaveMode.Append) .save ();

1 Ответ

0 голосов
/ 07 декабря 2018

Хорошо, это интересный вопрос.

Я не проверял детали реализации недавно выпущенного соединителя Spark.Но вы можете использовать некоторые ранее существующие методы.

  1. Сохранить результаты работы Spark как файлы CSV в Hadoop.Запустите стандартный параллельный ИМПОРТ из всех созданных файлов через HTTP-вызовы WebHDFS.
  2. Официальный UDF-скрипт , насколько я знаю, способен импортировать напрямую из Parquet.
  3. Вы можетеРеализуйте свой собственный Java UDF-скрипт, чтобы читать Parquet так, как вы хотите.Например, вот как это работает для файлов ORC .

Вообще говоря, лучший способ добиться некоторой реальной производительности - вообще обойти Spark.

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