

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

# 一般最佳实践
<a name="best-practices-general"></a>

无论你的用例如何，当你在上面使用 Apache Iceberg 时 AWS，我们都建议你遵循这些一般的最佳实践。
+ **使用 Iceberg 格式版本 2。**

  默认情况下，Athena 使用 Iceberg 格式版本 2。

  [当你在 Amazon EMR 上使用 Spark 或 AWS Glue 创建 Iceberg 表时，请按照 Iceberg 文档中所述指定格式版本。](https://iceberg.apache.org/docs/nightly/configuration/#reserved-table-properties)
+ **使用 AWS Glue Data Catalog 作为您的数据目录。**

  Athena 默认使用 AWS Glue Data Catalog 。

  当你在 Amazon EMR 上使用 Spark 或 AWS Glue 使用 Iceberg 时，请在你的 Spark 会话中添加以下配置以使用。 AWS Glue Data Catalog有关更多信息，请参阅本指南 AWS Glue前面的 “[Iceberg 的 Spark 配置](iceberg-glue.md#glue-spark-config)” 部分。

  ```
  "spark.sql.catalog.<your_catalog_name>.type": "glue"
  ```
+ **使用 a AWS Glue Data Catalog s 锁定管理器。**

  默认情况下，Athena 对 Ic AWS Glue Data Catalog eberg 表使用作为锁管理器。

  当你在 Amazon EMR 上使用 Spark 或 AWS Glue 使用 Iceberg 时，请务必将你的 Spark 会话配置配置配置配置为使用 AWS Glue Data Catalog 作为锁定管理器。有关更多信息，请参阅 Iceberg 文档中的[乐观锁定](https://iceberg.apache.org/docs/latest/aws/#optimistic-locking)。
+ **使用 Zstandard (ZSTD) 压缩。**

  Iceberg 的默认压缩编解码器是 gzip，可以使用 table 属性对其进行修改。`write.<file_type>.compression-codec`Athena 已经使用 ZSTD 作为 Iceberg 表的默认压缩编解码器。

  一般而言，我们建议使用 ZSTD 压缩编解码器，因为它可以在 GZIP 和 Snappy 之间取得平衡，并且在不影响压缩比的情况下提供良好的 read/write 性能。此外，还可以根据需要调整压缩级别。有关更多信息，请参阅 Athena 文档中的 A [thena 中的 ZSTD 压缩级别](https://docs.aws.amazon.com/athena/latest/ug/compression-support-zstd-levels.html)。

  Snappy 可能提供最佳的整体读取和写入性能，但压缩率低于 GZIP 和 ZSTD。如果您优先考虑性能（即使这意味着要在 Amazon S3 中存储更大的数据量），Snappy 可能是最佳选择。