Загрузить данные S3 в экземпляр Aurora MySQL - PullRequest
0 голосов
/ 03 мая 2018

Я пытаюсь загрузить данные в S3 в экземпляр Aurora MySQL. Я сделал это с помощью PySpark, производительность которого составляет 4 ГБ в час.

current_df.write.format('jdbc').options(
            url=url,
            driver=jdbc_driver,
            dbtable=table_name,
            user=username,
            password=password).mode("overwrite").save()

Добавлено несколько улучшений производительности и отмечено улучшение производительности (7 ГБ в час), однако это все же не так уж и здорово.

Параметры, добавленные в URL JDBC

useServerPrepStmts=false&rewriteBatchedStatements=true

Я попробовал другой подход

LOAD DATA FROM S3 's3://${s3.bucket}/${filename}' INTO TABLE ${TableName} FIELDS TERMINATED BY ',';

Таким образом он загружает 5 ГБ в час в MySQL.

У меня около 2 ТБ данных, необходимых для загрузки в экземпляр MySQL. Есть ли какой-нибудь возможный способ быстрее загрузить данные.

1 Ответ

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

Несколько случайных мыслей; Я надеюсь, что некоторые помогут:

  • Увеличьте выделенные IOPS на обеих сторонах. (Если вы можете получить некоторые метрики, вы сможете решить , какой стороне нужно больше.)
  • Что такое s3://... - звучит как проникновение в удаленную файловую систему? Насколько удален?
  • Если он достаточно удаленный, рассмотрите возможность архивирования и копирования файлов ближе к месту, затем разархивируйте (так как LOAD не имеет опции разархивирования).
  • Удаленный ... Возможно, у вас ограничена пропускная способность сети?
  • Запустите LOADs параллельно. Как много? Трудно сказать. Возможно, IOPS на одном конце или другом будет ограничивающим фактором.
  • Есть ли у вас «чрезмерное» количество индексов в таблицах? Это может замедлить LOAD. Удаление индексов может ускорить LOAD, но вам нужно будет повторно добавить индексы позже. Главное - избавиться от индексов, которые вам не нужны.
  • Исходные файлы, уже отсортированные в порядке PRIMARY KEY, увеличат LOAD (при условии, что в целевой схеме уже определен PK, что и должно быть). Конечно, предварительная сортировка файлов занимает много времени, поэтому существует компромисс.
...