适用于 LiveAnalytics 的 Timestream 中 UNLOAD 最佳实践 - Amazon Timestream
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

有关与适用于 LiveAnalytics 的 Amazon Timestream 类似的功能,可以考虑使用适用于 InfluxDB 的 Amazon Timestream。适用于 InfluxDB 的 Amazon Timestream 提供简化的数据摄取和个位数毫秒级的查询响应时间,以实现实时分析。点击此处了解更多信息。

适用于 LiveAnalytics 的 Timestream 中 UNLOAD 最佳实践

以下是与 UNLOAD 命令相关的最佳实践。

  • 使用 UNLOAD 命令导出至 S3 存储桶的数据量不受限制。然而,查询会在 60 分钟后超时,我们建议单个查询导出的数据量不超过 60GB。如果需要导出超过 60GB 的数据,请将任务拆分为多个查询。

  • 虽然可向 S3 发送数千个请求以上传数据,但建议将写入操作并行化到多个 S3 前缀。请参阅此处的文档。当多个读取器/写入器访问同一文件夹时,S3 API 调用速率可能会受到限制。

  • 。鉴于 S3 键长度对前缀定义的限制,我们建议将存储桶和文件夹名称控制在 10-15 个字符内,尤其是在使用 partitioned_by 子句时。

  • 当包含 UNLOAD 语句的查询返回 4XX 或 5XX 时,可能是部分结果已写入 S3 存储桶。适用于 LiveAnalytics 的 Timestream 不会删除存储桶中的任何数据。在执行另一个具有相同 S3 目标的 UNLOAD 查询之前,我们建议手动删除由失败查询创建的文件。可以使用对应的 QueryExecutionId 识别由失败查询写入的文件。对于失败查询,适用于 LiveAnalytics 的 Timestream 不会将清单文件导出至 S3 存储桶。

  • 适用于 LiveAnalytics 的 Timestream 使用分段上传将查询结果导出至 S3。当您在包含 UNLOAD 语句的查询中收到适用于 LiveAnalytics 的 Timestream 返回的 4XX 或 5XX 时,适用于 LiveAnalytics 的 Timestream 会尽力中止分段上传,但仍可能存在部分数据未完成上传的情况。因此,我们建议按照此处的指南,在 S3 存储桶中设置对未完成的分段上传进行自动清理。

使用 CSV 解析器访问 CSV 格式数据的建议

  • CSV 解析器不允许在分隔符、转义符和引号字符中使用相同的字符。

  • 某些 CSV 解析器无法处理数组等复杂数据类型,我们建议通过 JSON 反序列化器进行处理。

访问 Parquet 格式数据的建议

  1. 如果使用案例需要在架构(即列名)中支持 UTF-8 字符,我们建议使用 Parquet-mr 库

  2. 结果中的时间戳以 12 字节整数(INT96)形式表示

  3. 时间序列将表示为 array<row<time, value>>,其他嵌套结构将使用 Parquet 格式支持的相应数据类型

使用 partition_by 子句

  • partitioned_by 字段中使用的列应为选择查询中的最后一列。如果 partitioned_by 字段中使用多个列,这些列应作为选择查询中的最后一列,且顺序应与 partition_by 字段中使用的顺序相同。

  • 用于对数据(partitioned_by 字段)进行分区的列值仅能包含 ASCII 字符。虽然适用于 LiveAnalytics 的 Timestream 支持在值中使用 UTF-8 字符,但 S3 仅支持 ASCII 字符作为对象键。