[AI/ML] 如何选用数据采集与预处理服务?

0

【以下的问题经过翻译处理】 客户将电动自行车传感器数据加载到S3,希望从这些传感器数据中通过AI/ML获得更多洞察。 数据每个大小约为4KB文件,存储在S3桶中。数据被放入以下格式中:

时间戳1,传感器A,传感器B,传感器C,...,传感器Z 时间戳2,传感器A,传感器B,传感器C,...,传感器Z 时间戳3,传感器A,传感器B,传感器C,...,传感器Z ......

然后将这些传感器数据放入一个约为4KB大小的文件中。

我计划的方法是:

*读取S3对象 *使用Lambda解析S3对象。我考虑了Glue,但想将数据放入DynamoDB中,而Glue似乎不支持。此外,Glue似乎更昂贵。 *将数据放入带有自行车ID的DynamoDB并将时间戳作为排序键。 *使用SageMaker学习DynamoDB数据。将分开讨论选择哪个模型和进行时间序列推理。 *如果需要重新学习,则使用DynamoDB数据,而不是来自S3的数据。我认为从DynamoDB获取数据比从原始S3数据获取数据更快。 *此外,我认为我们可以过滤一些错误输入或对DynamoDB数据应用一些小修改(将时间戳转换为正确时间等)。 *根据模型进行推理输出。

有其他推荐的方案吗?或者通过Athena或直接访问S3?或者使用Glue和Redshift? 目前大约为100MB数据即可训练处可用的模型,Glue和Redshift可能更适合数据量更大的场景。

1 回答
0

【以下的回答经过翻译处理】 关于DynamoDB的想法

每GB的数据存储成本方面,DynamoDB大约是S3的5倍。此外,它还有RCU/WCU成本。

我建议将数据保留在S3中。不仅更具成本效益,而且使用S3,您不必担心DynamoDB的RCU/WCU成本或吞吐量。

SageMaker笔记本和训练实例可以直接从S3中读取,而S3具有高吞吐量。我认为100 MB数据集不会有性能问题。

如果您需要准备/转换数据,可以使用Glue、Athena、GlueDataBrew、GlueStudio等在S3中就地进行转换。

关于Glue和DynamoDB

我考虑了Glue,但想将数据放在DynamoDB中,而Glue似乎不支持。

Glue支持Python和Spark作业。如果使用Glue Python作业,可以导入boto3(AWS SDK)库并写入DynamoDB。

其他策略

客户如何摄取传感器数据/如何写入S3?他们使用AWS IoT Core吗?

无论如何,您描述的模式到目前为止都是:

设备- > S3中的传感器数据- >使用Lambda进行转换- >将数据存储在DynamoDB中。

另一种您可以考虑的方法是使用具有Lambda转换的Kinesis Firehose。这将允许您在将数据写入S3之前进行“内联”解析/转换,从而消除了重新从S3读取数据并在事后应用转换的需要。Firehose还允许您将存储的数据以Parquet等格式编写,这有助于成本以及后续查询性能。

如果要存储原始数据和转换后的数据,可以使用Kinesis Streams/Firehose的“扇出”模式,其中一个输出是发送到 S3 的原始数据,另一个是转换后的流。

profile picture
专家
已回答 4 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则