Какие AWS сервисы и рабочие процессы я могу использовать для получения и анализа JSON данных о ежедневном использовании из API? - PullRequest
0 голосов
/ 30 января 2020

У меня есть некоторые примеры данных (которые имитируют реальные данные, которые я скоро начну получать), которые представляют поведение пользователя на веб-сайте.

Данные разбиты на 2 json файла за каждый день использования. (Когда я получаю реальные данные, я хочу получать их каждый день в полночь). Внизу этого вопроса приведены примеры фрагментов того, как эти данные выглядят, если это поможет.

Я не специалист по данным, но я хотел бы иметь возможность провести некоторый базовый анализ c эти данные. Я хочу, чтобы я мог видеть такие вещи, как количество созданных пользователями объектов в любой день и распределение различных атрибутов, которые они имеют / имели. Я также хотел бы иметь возможность визуализировать, какие объекты редактируются больше, кем, когда и как часто. Подобные вещи.

Я думаю, я бы хотел иметь возможность создавать информационные панели в google data studio (или аналогичной), что в основном означает, что я получаю эти данные в удобном для использования формате в обычную реляционную базу данных. Я думаю postgres в aws RDS (нет того большого количества данных, которые мне нужны что-то вроде Авроры, я думаю, хотя я не ужасно против).

Я хочу автоматизировать прием данных (на данный момент примеры наборов данных, которые я сохранил на S3, но в конечном итоге из API, который можно вызывать ежедневно). И я хочу автоматизировать любое переформатирование / обработку этих данных, чтобы получить те типы знаний, которые мне нужны.

AWS имеет так много инструментов обработки данных / больших данных, что мне кажется, что должен быть способ для автоматизации этого типа конвейера данных, но терминология и концепции слишком чужды для меня, и я не могу понять, в каком направлении двигаться.

Заранее благодарен за любой совет, который вы можете дать .


Пример / описание данных:

Один файл - это каталог всех созданных пользователем объектов, которые существуют на момент извлечения данных, вместе с их атрибутами. Это выглядит примерно так:

{
  "obj_001": {
    "id": "obj_001",
    "attr_a": "a1",
    "more_attrs": {
      "foo": "fred":,
      "bar": null
    }
  },
  "obj_002": {
    "id": "obj_002",
    "attr_a": "b2",
    "more_attrs": {
      "foo": null,
      "bar": "baz"
    }
  }
}

Другой файл - это массив, в котором перечислены все пользовательские правки для тех объектов, которые произошли за последний день, что привело к состоянию из первого файла. Это выглядит примерно так:

[
  { 
    "edit_seq": 1,
    "obj_id": "obj_002",
    "user_id": "u56",
    "edit_date": "2020-01-27",
    "times": {
      "foo": null,
      "bar": "baz"
    }
  },
  { 
    "edit_seq": 2,
    "obj_id": "obj_001",
    "user_id": "u25",
    "edit_date": "2020-01-27",
    "times": {
      "foo": "fred",
      "bar": null
    }
  }
]

Ответы [ 2 ]

0 голосов
/ 30 января 2020

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

Вы также можете посмотреть на AWS Glue, который имеет внутренний интерфейс Spark, который также может сканировать схему и выполнять ETL.

0 голосов
/ 30 января 2020

Это зависит от архитектуры, которую вы хотите развернуть. Если вам нужен триггер на основе событий, я бы использовал SQS, я использовал его интенсивно, как только кто-то сбросил файл в s3, он может запустить SQS, который можно использовать для запуска Lambda.

Вот ссылка, которая может дать вам некоторое представление: http://blog.zenof.ai/processing-high-volume-big-data-concurrently-with-no-duplicates-using-aws-sqs/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...