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

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

从 Timestream 卸载的最佳实践 LiveAnalytics

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

  • 使用该UNLOAD命令可以导出到 S3 存储桶的数据量没有限制。但是,查询会在 60 分钟后超时,我们建议在单个查询中导出不超过 60GB 的数据。如果您需要导出超过 60GB 的数据,请将任务分成多个查询。

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

  • 考虑到定义前缀的 S3 密钥长度限制,我们建议将存储桶和文件夹名称设置在 10-15 个字符以内,尤其是在使用partitioned_by子句时。

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

  • Timestream for LiveAnalytics 使用分段上传将查询结果导出到 S3。当你收到来自 Timestream 的包含卸载语句的查询的 4XX 或 5XX 时,Timestream for 会尽力中止多部分上传,但可能会留下一些 LiveAnalytics 不完整的部分。 LiveAnalytics 因此,我们建议按照此处的指导设置自动清理您的 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 字符。虽然 Timestream LiveAnalytics 允许在值中使用 UTF-8 字符,但 S3 仅支持 ASCII 字符作为对象键。