

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

# Apache Iceberg 的参考架构 AWS
<a name="reference-architectures"></a>

本节提供了如何在不同用例中应用最佳实践的示例，例如批量摄取和将批量数据摄取和流式数据摄取相结合的数据湖。

## 每晚批量摄取
<a name="batch-ingestion"></a>

对于这个假设的用例，假设你的 Iceberg 桌每晚都会提取信用卡交易。每个批次仅包含增量更新，必须将其合并到目标表中。每年收到几次完整的历史数据。对于这种情况，我们建议使用以下架构和配置。

注意：这只是一个示例。最佳配置取决于您的数据和要求。

![数据从原始存储流经 Amazon EMR 并通过 AWS Glue ETL 流向 AWS Glue Data Catalog Iceberg 数据湖和。 Amazon Athena](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/apache-iceberg-on-aws/images/nightly-batch-ingestion.png)


建议
+ 文件大小：128 MB，因为 Apache Spark 任务以 128 MB 的区块处理数据。
+ 写入类型：写时复制。如本指南前面所述，这种方法有助于确保以读取优化的方式写入数据。
+ 分区变量： year/month/day。在我们的假设用例中，我们查询最新数据的频率最高，尽管我们偶尔会对过去两年的数据进行全表扫描。分区的目标是根据用例的要求推动快速读取操作。
+ 排序顺序：时间戳
+ 数据目录： AWS Glue Data Catalog

## 结合了批量和近实时摄取的数据湖
<a name="batch-real-time-ingestion"></a>

您可以在 Amazon S3 上配置数据湖，以便跨账户和地区共享批处理和流式传输数据。有关架构图和详细信息，请参阅 AWS 博客文章使用 [Apache Iceberg 构建交易数据湖， AWS Glue以及使用和 Amazon AWS Lake Formation Athena 进行跨账户数据共享](https://aws.amazon.com/blogs/big-data/build-a-transactional-data-lake-using-apache-iceberg-aws-glue-and-cross-account-data-shares-using-aws-lake-formation-and-amazon-athena/)。