

要获得与亚马逊 Timestream 类似的功能 LiveAnalytics，可以考虑适用于 InfluxDB 的亚马逊 Timestream。适用于 InfluxDB 的 Amazon Timestream 提供简化的数据摄取和个位数毫秒级的查询响应时间，以实现实时分析。点击[此处](https://docs.amazonaws.cn//timestream/latest/developerguide/timestream-for-influxdb.html)了解更多信息。

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

# 从 Timestream 卸载的最佳实践 LiveAnalytics
<a name="export-unload-best-practices"></a>

以下是与 UNLOAD 命令相关的最佳实践。
+ 使用 `UNLOAD` 命令导出至 S3 存储桶的数据量不受限制。然而，查询会在 60 分钟后超时，我们建议单个查询导出的数据量不超过 60GB。如果需要导出超过 60GB 的数据，请将任务拆分为多个查询。
+ 虽然可向 S3 发送数千个请求以上传数据，但建议将写入操作并行化到多个 S3 前缀。请参阅[此处](https://docs.amazonaws.cn/AmazonS3/latest/userguide/optimizing-performance.html)的文档。当多个人 readers/writers 访问同一个文件夹时，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 因此，我们建议按照[此处](https://www.amazonaws.cn/blogs/aws-cloud-financial-management/discovering-and-deleting-incomplete-multipart-uploads-to-lower-amazon-s3-costs/)的指南，在 S3 存储桶中设置对未完成的分段上传进行自动清理。

## 使用 CSV 解析器访问 CSV 格式数据的建议
<a name="export-unload-common-questions-what-information-recommendations-csv"></a>
+ CSV 解析器不允许在分隔符、转义符和引号字符中使用相同的字符。
+ 某些 CSV 解析器无法处理数组等复杂数据类型，我们建议通过 JSON 反序列化器进行处理。

## 访问 Parquet 格式数据的建议
<a name="export-unload-common-questions-what-information-recommendations-parquet"></a>

1. 如果使用案例需要在架构（即列名）中支持 UTF-8 字符，我们建议使用 [Parquet-mr 库](https://github.com/apache/parquet-mr)。

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

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

## 使用 partition\_by 子句
<a name="export-unload-best-practices-partition-by"></a>
+ `partitioned_by` 字段中使用的列应为选择查询中的最后一列。如果 `partitioned_by` 字段中使用多个列，这些列应作为选择查询中的最后一列，且顺序应与 `partition_by` 字段中使用的顺序相同。
+ 用于对数据（`partitioned_by` 字段）进行分区的列值仅能包含 ASCII 字符。虽然 Timestream LiveAnalytics 允许在值中使用 UTF-8 字符，但 S3 仅支持 ASCII 字符作为对象键。