2016-08-22 9 views
2

У меня есть куча данных в файлах, хранящихся в Amazon S3, и я планирую использовать его для создания хранилища данных в Redshift. Мой первый вопрос - если правильный подход заключается в создании DV и Data Marts в Redshift или если я должен рассматривать S3 как мое Data Lake и иметь только Data Marts в Redshift?Data Vault в стратегии Redshift и ETL

В моей архитектуре я сейчас рассматриваю бывший (например, S3 Data Lake + Redshift Vault и Marts). Тем не менее, я не знаю, могу ли я создавать процессы ETL непосредственно в Redshift, чтобы заполнить Marts данными в Vault, или если мне придется, например, использовать Amazon EMR для обработки необработанных данных на S3, генерировать новые файлы там и наконец, загрузите их в Marts.

Итак, мой второй вопрос: Какова должна быть стратегия ETL? Благодарю.

+1

S3 не является реляционным, это в основном для хранения файлов. Data Vault реализуется в реляционной базе данных, поэтому вы не можете создать datavault на S3. Как бы вы построили хабы, ссылки, спутники в S3? Если вы ищете терминологию, то S3 можно назвать вашим «данным озером» (теперь я чувствую себя грязным) –

+0

@ Nick.McDermaid, вы правы. Я уже думал о S3 как о Data Lake в своей архитектуре. Мой вопрос больше связан с наличием DV и Data Marts в Redshift или просто Data Marts, которые заполнены данными в озере (я отредактирую вопрос). Я думаю, это загрузить хранилище с данными в S3, а затем загрузить Marts с данными из Vault. Тем не менее, я не знаю, смогу ли я создавать процессы ETL непосредственно в Redshift, или мне придется это сделать, например Amazon EMR, обрабатывая файлы на S3, создавая новые файлы с данными для Marts и загружая их это в Redshift? –

+2

Ну, если у вас есть необходимость в хранилище данных, его нужно будет построить в режиме красного смещения. Вы можете загружать файлы в DV или DM. Если вы решите, что хотите DV, вы можете загрузить DV в DM через представления и удалить/вставить/обновить операторы - вам не нужно снова обходить экспорт и импорт файлов. Загрузка файлов в Redshift потребует выполнения какого-либо запускающего/планируемого запуска задания (на AWS или нет) для подключения к красному смещению и запуска команды 'COPY' внутри красного смещения для загрузки данных. Я исследовал проект, делающий это, но никогда не начал его, поэтому для меня это все теория сейчас. –

ответ

0

Извинения! У меня нет репутации, поэтому я пишу в разделе ответов.

Я точно в той же лодке, что и вы. Попытка выполнить мою операцию ETL в redshift и на данный момент у меня есть 3 миллиарда строк и рассчитываю на резкое увеличение.
Прямо сейчас, загружая данные в витрины данных в redshift с помощью DML, которые вызывается в регулярном интервале от AWS lambda. По моему мнению, очень сложно создать хранилище данных в Redshift.

+0

похоже, что вы уже достигли большего прогресса, чем я. В настоящее время я занимаюсь некоторыми исследованиями и определяю то, что я называю v0.1 моей потоковой и информационной архитектуры. Стратегия Data Vault имеет для меня большой смысл, поэтому теперь я пытаюсь понять последствия внедрения Redshift. Вы рассматривали использование Amazon Data Pipeline для ETL между Vault и Marts? Из того, что я прочитал, он выглядит как возможный подход за небольшую дополнительную плату. –

+0

Да, вы можете использовать конвейер данных, но имейте в виду, что минимальный интервал планирования для конвейера данных составляет 15 минут, а требования к бизнесу более часты. Кроме того, я не смог найти документацию для выполнения преобразования SQL на моих промежуточных таблицах между Redshift (Source) и Redshift (Destination). –

0

S3 - это только хранилище ключей для файлов. Вы не можете создать там DV или DW. Таким образом, вы можете использовать Redshift или EMR для обработки данных в реляционном формате для вашего DV. Вам решать, выбираете ли вы; EMR имеет конкретные варианты использования. IMO

+0

У меня ясно, что S3 не для DV. Вопрос о DV + DM в Redshift против DM только там. Я также спросил о стратегиях ETL для заполнения реляционной модели в Redshift данными S3 –

+0

Если у вас есть только DM в Redshift, где вы собираетесь хранить свой DV? ЭЙ? Это одно дорогое решение. Или кажется, что вы хотите полностью отказаться от использования DV? Я действительно не понимаю ваш подход здесь. Почему вы хотите использовать DV исключительно на том, что вы можете сделать с точки зрения ETL? – simplycoding

+0

Я должен был уточнить свой вопрос. Я хочу получить информацию о наличии DV, откуда можно получить данные, чтобы заполнить DM, и иметь только DM в Redshift, которые заполнены данными из S3, которые, скорее всего, должны быть предварительно обработаны с помощью EMR. Я читал о DV и вижу много преимуществ, но все же хотел бы услышать от других впечатлений. Предполагая, что рекомендация заключается в том, чтобы делать DV, я хотел бы знать, как другие реализуют преобразование и загрузку данных с DV (Redshift) в DM (Redshift). Используя Lambda, Data Pipeline, SQL в Redshift, EMR, чтобы получить данные от DV и поместить их в DM? –

0

Я немного опоздал с вечеринкой, и, без сомнения, вы разрешили это, но это все еще может иметь значение. Просто подумал, что поделюсь этим мнением. Одним из решений является использование S3 и Hive в качестве стойкой промежуточной области (Data Lake, если хотите), чтобы вывести данные из источников. Постройте свой DV полностью в Redshift. Вам все равно понадобится промежуточная область в Redshift, чтобы загружать файлы с S3, чтобы хеши были рассчитаны по пути в стоп-таблицы Redshift (вот где EMR/Hive входит). Вы можете добавить хеши прямо в Redshift, но он может поставить Redshift под принуждение в зависимости от объема. Перетащите данные из очереди в DV через простые старые операторы массовой вставки и обновления, а затем виртуализируйте свои витрины в Redshift с помощью представлений.

Чтобы достичь этого, вы можете использовать любой инструмент для конвейера данных, и лямбда также может быть кандидатом для вас или другого инструмента рабочего процесса/конвейера.