S3 и Spark: размер файла и рекомендации по формату файла - PullRequest
1 голос
/ 10 июля 2019

Мне нужно прочитать данные (происходящие из таблицы RedShift с 5 столбцами, общий размер таблицы порядка 500 ГБ - 1 ТБ) из S3 в Spark через PySpark для ежедневного пакетного задания.

Есть ли лучшие практики вокруг:

  • Предпочитаемые форматы файлов для хранения моих данных в S3? (формат имеет значение?)
  • Оптимальный размер файла?

Любые ресурсы / ссылки, которые могут указать мне правильное направление, также будут работать.

Спасибо!

1 Ответ

2 голосов
/ 10 июля 2019

В этой записи блога есть отличная информация по этому вопросу:

https://mapr.com/blog/tips-and-best-practices-to-take-advantage-of-spark-2-x/

Посмотрите на раздел под названием: Используйте лучшее хранилище данных для вашего варианта использования

Исходя из личного опыта, я предпочитаю использовать паркет в большинстве сценариев, потому что я обычно выписываю данные один раз, а затем читаю их много раз (для аналитики).

Что касается количества файлов, мне бы хотелось иметь от 200 до 1000.Это позволяет кластерам любого размера читать и писать параллельно, и позволяет эффективно считывать данные, потому что с паркетом я могу увеличивать только интересующий меня файл. Если у вас слишком много файлов, естьтонна накладных расходов при запоминании всех имен и местоположений файлов, и если у вас слишком мало файлов, он не сможет эффективно распараллелить ваши операции чтения и записи.

Размер файла, который я считаю менее важным, чем числофайлы при использовании паркета.

РЕДАКТИРОВАТЬ:

Вот хороший раздел из этого поста в блоге, который описывает, почему я люблю использовать паркет:

Apache Parquet обеспечивает самую высокую скорость чтения с помощью Spark.Parquet размещает данные в столбцах, размещая связанные значения в непосредственной близости друг к другу, чтобы оптимизировать производительность запросов, минимизировать ввод-вывод и упростить сжатие.Паркет обнаруживает и кодирует те же или похожие данные, используя технику, которая экономит ресурсы.Parquet также хранит метаданные и статистику столбцов, которые могут быть переданы для фильтрации столбцов (см. Ниже).Spark 2.x имеет векторизованный ридер Parquet, который выполняет распаковку и декодирование в пакетах столбцов, обеспечивая ~ 10x более высокую производительность чтения.

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