Перемещайте данные из PostgreSQL в AWS S3 и анализируйте с помощью RedShift Spectrum - PullRequest
0 голосов
/ 05 ноября 2018

У меня есть большое количество таблиц PostgreSQL с различными схемами и огромное количество данных внутри них.

Я не могу сейчас выполнять аналитику данных, потому что объем данных довольно большой - несколько ТБ данных, а PostgreSQL не может обрабатывать запросы в разумные сроки.

Я думаю о следующем подходе - я обработаю все свои таблицы PostgreSQL с помощью Apache Spark, загрузлю DataFrames и сохраню их как файлы Parquet в AWS S3. Затем я буду использовать RedShift Spectrum для запроса информации, хранящейся в этих файлах PARQUET.

Прежде всего, я хотел бы спросить - будет ли это решение работать вообще?

И второе - сможет ли RedShift Spectrum автоматически создавать EXTERNAL-таблицы из этих файлов Parquet без дополнительной спецификации схемы (даже если исходные таблицы PostgreSQL содержат неподдерживаемые типы данных AWS RedShift)?

Ответы [ 2 ]

0 голосов
/ 06 ноября 2018
  1. Redshift Spectrum в значительной степени поддерживает те же типы данных, что и сам Redshift.

  2. Redshift Spectrum создает кластер вычислительных узлов за сценой. Размер кластера зависит от количества реальных узлов Redshift Cluster, поэтому, если вы планируете создать кластер Redshift с 1 узлом, Spectrum будет работать довольно медленно.

  3. Как вы отметили в комментариях, вы можете использовать Athena для запроса данных, и это будет лучшим вариантом в вашем случае вместо Spectrum. Но у Athena есть несколько ограничений, таких как время выполнения 30 минут, потребление памяти и т. Д. Поэтому, если вы планируете выполнять сложные запросы с несколькими объединениями, это может просто не сработать.

  4. Redshift Spectrum не может создавать внешние таблицы без предоставленной структуры.

  5. Лучшим решением в вашем случае будет использование Spark (в EMR или Glue) для преобразования данных, Athena для запроса, а если Athena не может выполнить конкретный запрос - использовать SparkSQL для тех же данных. Вы можете использовать клей, но выполнение заданий в EMR на точечных инстансах будет более гибким и более дешевым Кластеры EMR поставляются с EMRFS, что дает вам возможность использовать S3 почти прозрачно вместо HDFS.

0 голосов
/ 05 ноября 2018

AWS Glue может быть интересным вариантом для вас. Это хост-версия Spark с некоторыми специфическими дополнениями AWS и Data Crawler + Data Catalog.

Он может сканировать неструктурированные данные, такие как файлы паркета, и определять структуру. Который затем позволяет экспортировать его в AWS RedShift в структурированной форме, если это необходимо.

См. в этом блоге о том, как подключить его к базе данных postgres с помощью JDBC для перемещения данных из Postgres в S3.

...