Открыть сервис

Amazon Redshift Spectrum

Amazon Redshift Spectrum — это компонент сервиса облачных вычислений Amazon Web Services (AWS), позволяющий выполнять SQL-запросы к данным, хранящимся в форматах открытых файлов (Parquet, ORC, Avro, JSON, CSV, TSV и других) непосредственно в объектном хранилище Amazon Simple Storage Service (S3), без необходимости предварительной загрузки этих данных в кластер Amazon Redshift. Redshift Spectrum реализует архитектуру «разделения вычислений и хранения» (compute-storage separation), где обработка запросов выполняется на вычислительных узлах, управляемых сервисом, а данные остаются в S3.

Архитектура и принцип работы

Redshift Spectrum функционирует как внешний слой запросов (query engine), который интегрируется с ядром Amazon Redshift. Кластер Redshift выступает в роли координатора: он принимает SQL-запрос, анализирует его и, если запрос обращается к данным в S3, перенаправляет часть работы на Spectrum-слой.

Основные компоненты

Процесс выполнения запроса

  1. Пользователь отправляет SQL-запрос к кластеру Redshift.
  2. Оптимизатор запросов Redshift анализирует, какие данные находятся локально, а какие — в S3.
  3. Часть запроса, относящаяся к данным в S3, передаётся на Spectrum-слой.
  4. Spectrum-слой параллельно сканирует файлы в S3, используя метаданные (например, из каталога AWS Glue или Hive Metastore) для фильтрации по разделам (partition pruning) и минимизации объёма сканируемых данных.
  5. Spectrum применяет предикаты (условия WHERE) непосредственно к файлам, считывая только необходимые столбцы (columnar projection).
  6. Отфильтрованные и агрегированные данные возвращаются в кластер Redshift, где они могут быть объединены с локальными таблицами.
  7. Конечный результат отправляется пользователю.

Ключевые характеристики

Форматы данных и сжатие

Spectrum поддерживает столбцовые форматы (Parquet, ORC) и строчные (Avro, JSON, CSV, TSV). Использование столбцовых форматов значительно повышает производительность, так как позволяет считывать только нужные столбцы. Рекомендуется использовать сжатие (Snappy, Gzip, LZO) для уменьшения объёма передаваемых данных.

Разделение данных (Partitioning)

Для ускорения запросов данные в S3 могут быть организованы по разделам (например, по дате: /year=2023/month=01/day=15/). Spectrum автоматически определяет разделы на основе структуры каталогов и использует их для фильтрации (partition pruning), что сокращает объём сканирования.

Безопасность

Производительность

Применение

Redshift Spectrum используется в сценариях, где требуется анализировать большие объёмы данных, которые нецелесообразно или невозможно загрузить в кластер Redshift:

Ограничения

Сравнение с другими сервисами AWS

ХарактеристикаRedshift SpectrumAmazon AthenaAmazon EMR
Тип запросовSQL (через Redshift)SQL (серверный)SQL, Python, Java, Scala
Управление инфраструктуройТребуется кластер RedshiftБессерверныйТребуется кластер EMR
Интеграция с RedshiftПрямаяОтдельнаяЧерез Hive/Spark
ПроизводительностьВысокая (с кэшированием)СредняяВысокая (настраиваемая)
СтоимостьЗависит от объёма сканирования и времени кластераЗависит от объёма сканированияЗависит от времени работы кластера

Источники:

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →