首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS S3存储和模式

AWS S3存储和模式
EN

Stack Overflow用户
提问于 2018-10-03 10:38:05
回答 1查看 2.9K关注 0票数 1

我有一个IOT传感器,它向IoT MQTT核心主题发送以下消息:

代码语言:javascript
复制
{"ID1":10001,"ID2":1001,"ID3":101,"ValueMax":123}

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

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

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

2)如何将值可视化在模式中而不是单独的文件中?

3)我正在尝试从S3桶创建ML数据源,但是当Amazon尝试创建模式时,在下面得到错误:

"Amazon无法检索模式。如果您刚刚创建了这个数据源,请稍候再试。“

感谢所有的建议!

EN

回答 1

Stack Overflow用户

发布于 2018-10-03 22:36:39

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

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

  1. 使用多个传感器,可能会有多条消息在同一时间标记到达,这不会在S3中生成唯一的对象名称。
  2. 来自几乎同一时间的时间戳将具有类似的前缀,这样设计S3键可能无法以更高的消息速率提供最佳性能。

由于您使用的是MQTT,所以如果出现这两个问题,可以使用traceId函数而不是时间戳。

2)如何将值可视化在模式中而不是单独的文件中? 3)我正在尝试从S3桶创建ML数据源,但是当Amazon尝试创建模式时,在下面得到错误:

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

对于第二个问题,我认为您正在尝试将来自连续消息的消息数据组合到CSV中,或者至少将消息数据作为CSV文件的一行输出。我认为这在物联网SQL语言中是不可能的,因为它的目的是生成JSON。

另一种方法是使用Lambda操作配置JSON规则,并使用lambda函数将IoT转换为CSV,然后将CSV写到S3桶中。如果您朝这个方向走,您可能必须使用时间戳(或traceId)来充实您的IoT消息数据,如您所称的lambda。

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}}

这将直接用作CSV行及其values属性中的数据的源。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52625202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档