Я должен предварять это тем фактом, что я использую Enhanced VPC Routing для своей учетной записи AWS, что не позволяет мне использовать традиционные запросы S3 для Redshift:
" В вашем кластере не может быть включена расширенная маршрутизация VPC. (Для использования Spectrum) "
Мое понимание заключается в том, что AWS Redshift является высокооктановым Postgres-as-a-service, который оптимизирован для чрезвычайно быстрого чтения на больших объемах данных. Так что, если у вас лотов есть реляционные данные, которые вы хотите запросить / проанализировать, тогда Redshift - это хороший выбор для вас.
Мое понимание AWS Athena заключается в том, что он просто использует что-то вроде Apache Drill (или аналогичное) для обеспечения SQL-подобного интерфейса над любыми данными, хранящимися в сегментах S3 (реляционные и в противном случае, а также в любом формате: неструктурированный текст, JSON, XML и т. д.). Так что, если у вас есть данные в S3, которые вы хотите запросить с помощью SQL-подобного синтаксиса, Athena - хороший выбор для вас.
Для начала, может ли кто-нибудь начать с подтверждения / уточнения моего понимания выше? Предполагая, что я более или менее прав ...
Я структурированный / реляционный (хранится в файлах JSON и CSV), который живет на S3. Я хотел бы создать процесс ETL, который считывает эти данные из S3 и выгружает их в Redshift, чтобы последующие процессы могли их анализировать.
Так что я думаю о создании ETL-конвейера на основе Spark, в результате чего:
- Spark использует Athena для запроса данных S3 в
DataFrames
; Мне также интересно, может ли AWS Glue сделать здесь тяжелую работу
- Spark записывает содержимое этих
DataFrames
в Redshift
Итак, мой вопрос: это самый эффективный способ переноса БОЛЬШИХ объемов частично структурированных / реляционных данных S3 (снова хранящихся в различных форматах файлов) в Redshift, или есть лучший / более простой способ?