Как спроектировать AWS IoT Analytics Pipeline, который будет иметь отдельный набор данных для каждого устройства? - PullRequest
0 голосов
/ 18 марта 2020

У меня есть мобильное приложение, которое получает данные с датчиков и отправляет эти данные в AWS IoT Core Topi c. Я хочу передать эти данные в AWS IoT Analytics, а затем проанализировать их с помощью собственного кода машинного обучения - используя наборы контейнерных данных. Важно убедиться, что события разделены и сгруппированы по device_id и проанализированы за 30 минут - windows. В моем случае имеет смысл только анализировать группу событий, генерируемых одним и тем же device_id. Полезная нагрузка события уже содержит уникальное свойство device_id. Первое решение, которое приходит на ум, - это отдельная настройка Channel -> Pipeline -> DataStore -> SQL DataSet -> Container Data Set для каждого из мобильных клиентов. Визуально изображено так: AWS IoT Analytics architecture 1 Учитывая, что количество устройств равно N, проблема этой архитектуры состоит в том, что мне потребуется N каналов, N конвейеров, которые фактически идентичны, N хранилищ данных, которые хранить идентичный тип / схему данных и, наконец, 2 * N наборов данных. Поэтому, если у меня 50 000 устройств, количество ресурсов огромно. Это заставляет меня понять, что это не очень хорошее решение. Следующая идея, которая приходит мне в голову, состоит в том, чтобы иметь только один канал, один конвейер и одно хранилище данных для всех устройств и иметь только разные наборы данных SQL и разные наборы данных контейнера для каждого устройства. Это выглядит следующим образом: AWS IoT Analytics Architecture Эта архитектура теперь выглядит намного лучше, но если бы у меня было 50 000 устройств, мне все равно потребовалось бы 100 000 различных наборов данных. По умолчанию предел AWS составляет 100 наборов данных для каждой учетной записи. Конечно, я могу запросить увеличение лимита, но если ограничение по умолчанию составляет 100 наборов данных, то мне интересно, имеет ли смысл запрашивать увеличение лимита, которое в 1000 раз превышает значение по умолчанию? Является ли какая-либо из этих двух архитектур способом использования AWS IoT Analytics или я что-то упустил?

1 Ответ

0 голосов
/ 20 марта 2020

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

Я не думаю, что набор данных на пользователя является правильным способом для моделирования этого. Мы бы порекомендовали архитектуру данных использовать один набор данных (или, возможно, небольшое количество наборов данных, поворачиваемых по типу устройства, стране или другим группам более высокого уровня) и иметь запрос SQL, который извлекает данные за период времени. интерес, 30 минут в вашем случае. Затем вы запускаете набор данных контейнера, который использует набор данных и подготавливает итоговый анализ, необходимый для каждого пользователя. Записная книжка будет в основном перебирать каждый уникальный идентификатор клиента (возможно, вы смогли группировать и упорядочить в SQL, чтобы сделать это быстрее) и выполнять необходимый анализ перед отправкой этих данных, где это необходимо. У вас может быть 1 набор данных контейнера для начальной обработки данных для каждого клиента и второй набор данных контейнера для обучения ML в зависимости от сложности сценария, но для многих случаев подойдет один набор данных контейнера - я использовал этот подход обучить десятки тысяч отдельных «устройств», так что это также может работать для вашего варианта использования.

...