繁体   English   中英

AWS S3存储和架构

[英]AWS S3 storage and schema

我有一个IOT传感器,它将以下消息发送到IoT MQTT Core主题:

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

我添加了ACT / RULE,它将传入的消息存储在带有时间戳作为键的S3存储桶中(每个消息作为单独的文件/行存储在存储桶中)。

我以前只使用过SQL数据库,因此像这样存储它们对我来说是新的。

1)这是使用S3存储的正确方法吗?

2)如何可视化架构中的值而不是单独的文件?

3)我正在尝试从S3存储桶创建ML数据源,但是当Amazon ML尝试创建架构时,出现以下错误:

“ Amazon ML无法检索模式。如果您刚刚创建了此数据源,请稍等片刻,然后重试。”

感谢所有的建议!

1)这是使用S3存储的正确方法吗?

仅使用一个传感器,在IoT规则中使用[timestamp]( https://docs.aws.amazon.com/iot/latest/developerguide/iot-sql-functions.html#iot-function-timestamp函数将是一种S3中命名唯一对象的方法,但是可能会出现问题。

  1. 如果传感器不止一个,则可能有多个消息在同一时间戳到达,这将不会在S3中生成唯一的对象名称。

  2. 几乎同一时间的时间戳将具有相似的前缀,以这种方式设计S3密钥可能无法在更高的消息速率下为您提供最佳性能。

由于您使用的是MQTT,因此可以使用traceId函数而不是时间戳来避免出现这两个问题。

2)如何可视化架构中的值而不是单独的文件?

3)我正在尝试从S3存储桶创建ML数据源,但是当Amazon ML尝试创建架构时,出现以下错误:

对于第三个问题,我认为您可能会遇到ML中的数据格式问题,因为S3对象包含消息中的JSON数据而不是CSV。

对于第二个问题,我认为您正在尝试将连续消息中的消息数据合并为CSV,或者至少将消息数据输出为CSV文件的一行。 我认为仅使用Iot SQL语言是不可能的,因为它旨在产生JSON。

一种替代方法是使用Lambda操作配置IoT SQL规则,并使用lambda函数将JSON转换为CSV,然后将CSV写入S3存储桶。 如果您朝这个方向发展,则可能需要在调用lambda时使用时间戳(或traceId)来丰富IoT消息数据。

select timestamp() as timestamp, traceid() as traceid, concat(ID1, ID2, ID3, ValueMax) as values, * as message将生成JSON之类的规则

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

可以直接将其用作来自其values属性的数据的CSV行的源。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM