AWS S3 хранилище и схема - PullRequest
       11

AWS S3 хранилище и схема

0 голосов
/ 03 октября 2018

У меня есть датчик IOT, который отправляет следующее сообщение в основной раздел IoT MQTT:

{"ID1":10001,"ID2":1001,"ID3":101,"ValueMax":123}

Я добавил ACT / RULE, который сохраняет входящее сообщение в S3 Bucket с отметкой времени в качестве ключа (каждое сообщение хранится в виде отдельного файла / строки в корзине).

Раньше я работал только с базами данных SQL, поэтому хранить их так, как будто это для меня новость.

1) Это правильный способ работы с хранилищем S3?

2) Как можно визуализировать значения в схеме вместо отдельных файлов?

3) Iя пытаюсь создать источник данных ML из корзины S3, но при попытке Amazon ML создать схему появляется сообщение об ошибке:

"Amazon ML не может получить схему. Если вы только что создали этуисточник данных, подождите немного и попробуйте снова. "

Цените все советы!

1 Ответ

0 голосов
/ 04 октября 2018

1) Это правильный способ работы с хранилищем S3?

Только с одним датчиком, используя функцию [timestamp] (https://docs.aws.amazon.com/iot/latest/developerguide/iot-sql-functions.html#iot-function-timestamp в вашем правиле IoT)было бы способом назвать уникальные объекты в S3, но есть проблемы, которые могут возникнуть.

  1. Если у вас более одного датчика, вы можете получить несколько сообщений с одной и той же отметкой времени, и этоне будет генерировать уникальные имена объектов в S3.

  2. Временные метки почти в одно и то же время будут иметь аналогичные префиксы, и проектирование ключей S3 таким способом может не дать вам наилучшей производительности при более высоком сообщенииrate.

Поскольку вы используете MQTT, вы можете использовать функцию traceId вместо отметки времени, чтобы избежать этих двух проблем, если они возникнут.

2) Как я могу визуализировать значения в схеме вместо отдельных файлов?

3) Я пытаюсь создать источник данных ML из корзины S3, но при Amazon Amazon ML появляется ошибка ниже.пытается создать сchema:

По третьему вопросу, я думаю, вы можете столкнуться с проблемой формата данных в ML, поскольку ваши объекты S3 содержат данные JSON из ваших сообщений, а не CSV.

По второму вопросу, я думаю, вы пытаетесь объединить данные сообщения из последовательных сообщений в CSV или, по крайней мере, вывести данные сообщения в виде одной строки файла CSV.Я не думаю, что это возможно только с языком Iot SQL, так как он предназначен для создания JSON.

Одна альтернатива - настроить правило SQL IoT с действием Lambda и использовать функцию лямбда, чтобы заставить ваш JSONПреобразование CSV, а затем записать CSV в ваше ведро S3.Если вы пойдете в этом направлении, вам, возможно, придется дополнить данные сообщения IoT временной меткой (или traceId) при вызове лямбды.

Правило, подобное select timestamp() as timestamp, traceid() as traceid, concat(ID1, ID2, ID3, ValueMax) as values, * as message, будет генерировать JSON, как

* 1039.*{"timestamp":1538606018066,"traceid":"abab6381-c369-4a08-931d-c08267d12947","values":[10001,1001,101,123],"message":{"ID1":10001,"ID2":1001,"ID3":101,"ValueMax":123}}

Это было бы просто использовать в качестве источника для строки CSV с данными из свойства values.

...