

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

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

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

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

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

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

![\[Data flow diagram showing raw storage to Amazon EMR and AWS Glue ETL, then to AWS Glue Data Catalog and data lake.\]](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 的区块处理数据。
+ 写入类型: copy-on-write. 如本指南前面所述，这种方法有助于确保以读取优化的方式写入数据。
+ 分区变量: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/)。