Паркет с Афиной VS Redshift - PullRequest
2 голосов
/ 08 марта 2019

Я надеюсь, что кто-то может помочь мне с этой проблемой.В настоящее время я работаю над проектом конвейера данных, моя текущая дилемма заключается в том, использовать ли паркет с Athena или сохранить его в Redshift

2 Сценарии: первый,

EVENTS --> STORE IT IN S3 AS JSON.GZ --> USE SPARK(EMR) TO CONVERT TO PARQUET --> STORE PARQUET BACK INTO S3 --> ATHENA FOR QUERY --> VIZ

второй,

EVENTS --> STORE IT IN S3 --> USE SPARK(EMR) TO STORE DATA INTO REDSHIFT

Проблемы с этим сценарием:

  1. JDBC Spark с Redshift работает медленно
  2. Репозиторий Spark-Redshift с использованием блоков данных имеет сбойную сборку и был обновлен 2 года назад

Я не могу найти полезную информацию о том, какой метод лучше.Должен ли я даже использовать Redshift или паркет достаточно хорош?

Также было бы замечательно, если бы кто-нибудь сказал мне, есть ли какие-либо другие методы для соединения спарк с Redshift, потому что есть только 2 решения, которые я видел в Интернете - JDBC иSpark-Reshift (Databricks)

PS модель ценообразования меня не волнует, я также имею дело с миллионами данных событий.

Ответы [ 3 ]

1 голос
/ 08 марта 2019

Вот несколько идей / рекомендаций

  • Не используйте JDBC.
  • Spark-Redshift работает отлично, но это сложное решение.
  • Вам не нужно использовать искру для преобразования в паркет, также есть возможность использовать улей. увидеть https://docs.aws.amazon.com/athena/latest/ug/convert-to-columnar.html
  • Афина великолепна при использовании против паркета, поэтому вам не нужно использовать Redshift вообще
  • Если вы хотите использовать Redshift, то используйте спектр Redshift для настройки смотреть на ваши паркетные столы, а затем при необходимости CTAS в Redshift для ввода данных, если вам нужно.
  • AWS Glue Crawler может быть отличным способом создания метаданных, необходимых для сопоставить паркет с Афиной и Redshift Spectrum.

Моя предложенная архитектура:

СОБЫТИЯ -> СОХРАНИТЬ В S3 -> HIVE для преобразования в паркет -> Использовать непосредственно в Афине

* * Тысяча двадцать-одиной и / или

СОБЫТИЯ -> СОХРАНИТЬ В S3 -> HIVE для преобразования в паркет -> Использовать непосредственно в Redshift с помощью Redshift Spectrum

ВЫ НЕ МОЖЕТЕ конвертировать в паркет, если вы используете правильную структуру разбиения (папки s3) и архивируете данные, тогда Athena / spectrum тогда производительность может быть достаточно хорошей без сложности преобразования в паркет. Это зависит от вашего варианта использования (объемы данных и типы запросов, которые вам нужно выполнить).

0 голосов
/ 19 июня 2019

В вопросе отсутствуют некоторые детали. Как бы вы справились с инкрементным повышением в конвейере данных.

Если вы внедрили медленно изменяющийся размер (тип SCD 1 или 2), этим нельзя управлять с помощью файлов паркета. Но этим можно легко управлять в Redshift.

0 голосов
/ 08 марта 2019

Какой из них использовать, зависит от ваших данных и схем доступа. Athena напрямую использует ключевую структуру S3, чтобы ограничить объем сканируемых данных. Предположим, у вас есть тип и время события. Ключи S3 могут быть, например, yyyy/MM/dd/type/* или type/yyyy/MM/dd/*. Первая структура ключей позволяет ограничивать объем данных, которые будут сканироваться датой или датой и типом, но не только одним типом. Если вы хотите выполнять поиск только по типу x, но не знаете даты, для этого потребуется полное сканирование сегмента. Последняя ключевая схема была бы наоборот. Если вам в основном нужен доступ к данным только одним способом (например, по времени), Афина может быть хорошим выбором.

С другой стороны, Redshift - это хранилище данных на основе PostgreSQL, которое намного сложнее и гибче, чем Athena. Разделение данных играет большую роль с точки зрения производительности, но схема может быть разработана различными способами в соответствии с вашим вариантом использования. По моему опыту, лучший способ загрузить данные в Redshift - это сначала сохранить их на S3, а затем использовать COPY https://docs.aws.amazon.com/redshift/latest/dg/r_COPY.html. Это в несколько раз быстрее, чем JDBC, который я нашел только хорошим для тестирования с небольшими объемами данных. Это также, как Kinesis Firehose загружает данные в Redshift. Если вы не хотите самостоятельно копировать S3, Firehose предоставит вам альтернативу.

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