Загрузка данных из S3 для сортировки и анализа времени - PullRequest
0 голосов
/ 19 января 2019

В настоящее время я пытаюсь найти лучший архитектурный подход для моего варианта использования:

У меня есть S3 сегменты (два полностью разделенных), которые содержат данные, хранящиеся в формате JSON. Данные разбиты по префиксам год / месяц / день, и в определенный день я могу найти, например, сотни файлов на эту дату

(пример: s3: // mybucket / 2018/12/31 / file1, s3: // mybucket / 2018/12/31 / file2, s3: //mybucket/2018/12/31/file..n)

К сожалению, внутри определенного префикса на один день, в этих десятках или сотнях файлов JSON не упорядочены по точной временной отметке - поэтому, если мы последуем этому примеру:

s3: // mybucket / 2018/12/31 /

Я могу найти:

file1 - который содержит JSON об объекте "A" с отметкой времени "2018-12-31 18:00"

file100 - который содержит JSON об объекте "A" с отметкой времени "2018-12-31 04:00"

Что еще хуже ... тот же сценарий, что и у меня со вторым ведром.

Что я хочу сделать с этими данными?

Соберите мои события из обоих сегментов, упорядоченных по «идентификатору» объекта, отсортированным способом (по отметке времени), чтобы визуализировать это на временной шкале на последнем шаге (какие инструменты и как это выходит за рамки).

Я больше сомневаюсь, как это сделать:

  • экономически эффективным способом
  • Собственное облако (в AWS)
  • С минимально возможным обслуживанием

О чем я думал:

  1. Не уверен, если ... но загружает каждый новый файл, поступивший на S3, в DynamoDB (с использованием запуска по лямбде) AFAIK Создание таблицы в правильном подходе - мой идентификатор как ключ Hask и метка времени как Range Key должен работать для меня, правильно? Поскольку каждая новая вставленная строка будет разделена на определенный идентификатор и уже упорядочена в правильном порядке - но я не эксперт.

  2. Используйте Log-stash для загрузки данных из S3 в ElasticSearch - снова AFAIK, все в ES может быть проиндексировано, поэтому также отсортировано. Timelion, вероятно, позволит мне сделать этот причудливый анализ, который мне нужен. Но опять же .... не уверен, будет ли ES работать так, как я хочу ... цена ... объем большой и т. Д.

  3. ??? Других идей нет

Чтобы помочь как-то понять мою потребность и показать немного структуры данных, я подготовил это: :)

пример рабочего процесса

Объем данных?

Около + - 200 000 событий - каждое событие представляет собой JSON с 4 функциями (ID, Event_type, Timestamp, Price)

Подведем итог:

Мне нужно эффективно разместить данные где-нибудь, минимизировать затраты, отсортировать их для поддержки на следующем шаге, чтобы представить, как события меняются в зависимости от времени - фильтруется по определенному «ID».

Спасибо за любые полезные советы, рекомендации и решения, на которые я могу положиться! :) 1071 *

@ Джон Ротенштейн - вы правы, я совершенно забыл добавить эти детали. По сути, мне не нужны никакие функции SQL, так как данные не будут обновляться. Единственный сценарий - это то, что новое событие для определенного идентификатора просто прибудет, поэтому только новые инкрементные данные. Исходя из этого, моя единственная операция над этим набором данных - «Выбрать». Вот почему я предпочел бы скорость и мгновенный ответ. Люди будут смотреть на это в основном по каждому «идентификатору», поэтому используют фильтрацию. Данные поступают каждые 15 минут на S3 (новые файлы).

@ Атхар Хан - спасибо за хорошее предложение!

1 Ответ

0 голосов
/ 20 января 2019

Насколько я понимаю, я бы выбрал второй вариант Elasticsearch с Logstash, загружающим данные из S3, и Kibana в качестве инструмента для исследования, поиска, сортировки и визуализации.

Лямбда, передающая данные из s3 в DynamoDB, вероятно, будет работать, но может быть менее эффективной и стоить дороже, так как вы запускаете вычислительный процесс для каждого события, в то время как нажимаете на Dynamo небольшими / единичными партиями. Logstash, с другой стороны, будет читать файлы один за другим и обрабатывать их все. Это также зависит от того, как часто вы планируете загружать свежие данные в S3, но оба решения должны подойти.

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

...