Проблема с производительностью при записи данных в снежинку с помощью spark df

Я пытаюсь прочитать данные из системы AWS RDS и записать в Snowflake с помощью SPARK. Моя работа SPARK устанавливает соединение JDBC с RDS и извлекает данные в фрейм данных и, с другой стороны, тот же фрейм данных, который я записываю в снежинку с помощью коннектора снежинки.

Постановка проблемы: когда я пытаюсь записать данные, запись даже 30 ГБ занимает много времени.

Решение, которое я пробовал:
1) переразбиение фрейма данных перед записью.
2) кэширование фрейма данных.
3) подсчет df перед записью, чтобы сократить время сканирования при записи.


person BlackJack    schedule 02.05.2018    source источник
comment
Вы анализировали, происходит ли замедление из-за чтения через JDBC или из-за записи в Snowflake? 30Гб - это не так много данных для коннектора Snowflake. Но JDBC, как известно, неэффективен для передачи больших объемов данных.   -  person Marcin Zukowski    schedule 03.05.2018
comment
Трудно ответить без этой информации. Но опять же, я сильно подозреваю, что проблема в JDBC, а не в Snowflake или соединителе.   -  person Marcin Zukowski    schedule 08.05.2018
comment
Спасибо за предложения. Я проверил статистику, и проблема та же, что и вы, ребята. Чтение данных через соединение JDBC - узкое место. ** Путь вокруг **: я разделил данные по индексу и теперь загружаю с помощью цикла. Таким образом, тот же набор данных загружается довольно быстро. Есть ли лучший способ для того же ??   -  person BlackJack    schedule 08.05.2018
comment
К сожалению, я не знаю, это действительно вопрос к сообществу RDS / Spark.   -  person Marcin Zukowski    schedule 09.05.2018
comment
Вы пытались записать фрейм данных в местоположение S3 и использовать инструкцию Snowflake COPY, чтобы вставить его в таблицу?   -  person Simon D    schedule 31.05.2018
comment
Это один из вариантов, но я понял, что это проблема с соединением JDBC. Запись в S3 / snowflake занимает столько же времени, сколько и сбор всех данных из фрейма данных.   -  person BlackJack    schedule 14.06.2018


Ответы (1)


Возможно, этот вопрос давно не задавали. Если вы готовите фрейм данных или используете другой инструмент для подготовки данных к переносу в Snowflake, соединитель python интегрируется очень хорошо. Некоторые общие рекомендации по устранению неполадок с запросом, включая комментарии, которые были рекомендованы выше, и это здорово. Удалось ли вам разрешить соединение jdbc с последними обновлениями?

Некоторые другие способы устранения неполадок, которые следует учитывать:

  • Экономия времени и переход непосредственно от Spark к Snowflake с помощью коннектора Spark https://docs.snowflake.net/manuals/user-guide/spark-connector.html \
  • Для больших наборов данных, как правило, увеличение размера хранилища для сеанса, который вы используете, и зацикливание данных в файлах меньшего размера от 10 до 100 МБ, увеличит скорость вычислений.

Дайте мне знать, что вы думаете, я хотел бы услышать, как вы ее решили.

person Rachel McGuigan    schedule 09.10.2019