Firehose - копировать только определенные данные из потока - PullRequest
1 голос
/ 01 июня 2019

В настоящее время я использую Amazon Kinesis Firehose для выгрузки аналитических данных в таблицу базы данных Redshift.Эта таблица со временем стала очень большой, и запросы становятся все медленнее и медленнее.

Чтобы ускорить процесс, я хотел бы настроить несколько Firehoses и дифференцировать команду COPY на основе содержимого документа json.

Например, если у меня есть два документа json, которые выглядят следующим образом:

  tableName: 'abc',
  data: 'some string of data'
}

{
  tableName: 'xyz',
  data: 'some string of data'
}

, я бы настроил два пожарных шланга.Firehose abc запускает команду COPY для таблицы abc, а Firehose xyz запускает команду COPY для таблицы xyz.Однако они должны игнорировать данные друг друга, основываясь на tableName, указанном в json.Например, если xyz копирует данные, а json имеет tableName: 'abc', он должен игнорировать этот документ.

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

1 Ответ

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

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

Вот статья, в которой обсуждается, как это настроить. Он использует S3 в качестве пункта назначения, но вы должны иметь возможность использовать этот же метод с Redshift в качестве пункта назначения.

...