

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

# 在 EKS 上使用亚马逊 EMR 读取、写入数据并将其上传到亚马逊 S3 Express One 区域
<a name="upload-data-s3-express"></a>

对于 Amazon EMR 7.2.0 及更高版本，可将 Amazon EMR on EKS 与 [Amazon S3 Express One Zone](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-one-zone.html) 存储类结合使用，以提高运行作业和工作负载时的性能。S3 Express One Zone 是一种高性能的单区 Amazon S3 存储类，可为大多数延迟敏感型应用程序提供一致的个位数毫秒级数据访问。S3 Express One Zone 在其发布时，提供了 Amazon S3 中延迟最低、性能最高的云对象存储。

## 先决条件
<a name="upload-data-s3-express-prereqs"></a>

在将 S3 Express One Zone 与 Amazon EMR on EKS 结合使用之前，必须满足以下先决条件：
+ [完成 Amazon EMR on EKS 设置](https://docs.aws.amazon.com/emr/latest/EMR-on-EKS-DevelopmentGuide/setting-up.html)。
+ 设置 Amazon EMR on EKS 后，[创建一个虚拟集群](https://docs.aws.amazon.com/emr/latest/EMR-on-EKS-DevelopmentGuide/virtual-cluster.html#create-virtul-cluster)。

## 开始使用 S3 Express One Zone
<a name="upload-data-s3-express-getting-started"></a>

按照以下步骤开始使用 S3 Express One Zone

1. 为作业执行角色添加 `CreateSession` 权限。当 S3 Express One Zone 最初在 S3 对象上执行 `GET`、`LIST` 或 `PUT` 等操作时，存储类会代表您调用 `CreateSession`。以下示例展示了如何授予 `CreateSession` 权限。

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Resource": [
           "arn:aws:s3express:*:*:bucket/{{DOC-EXAMPLE-BUCKET}}"
         ],
         "Action": [
           "s3express:CreateSession"
         ],
         "Sid": "AllowS3EXPRESSCreatesession"
       }
     ]
   }
   ```

------

1. 您必须使用 Apache Hadoop 连接器 S3A 才能访问 S3 Express 存储桶，因此请将您的 Amazon S3 更改 URIs 为使用该`s3a`连接器的方案。如果未使用此方案，则可以更改用于 `s3` 和 `s3n` 方案的文件系统实施。

   要更改 `s3` 方案，请指定以下集群配置：

   ```
   [
     {
       "Classification": "core-site",
       "Properties": {
         "fs.s3.impl": "org.apache.hadoop.fs.s3a.S3AFileSystem",
         "fs.AbstractFileSystem.s3.impl": "org.apache.hadoop.fs.s3a.S3A"
       }
     }
   ]
   ```

   要更改 s3n 方案，请指定以下集群配置：

   ```
   [
     {
       "Classification": "core-site",
       "Properties": {
         "fs.s3n.impl": "org.apache.hadoop.fs.s3a.S3AFileSystem",
         "fs.AbstractFileSystem.s3n.impl": "org.apache.hadoop.fs.s3a.S3A",
         "fs.s3a.endpoint.region": "{{us-west-2}}",
         "fs.s3a.change.detection.mode": "none",
         "fs.s3a.select.enabled": "false"
       }
     },
      {
       "Classification": "spark-defaults",
       "Properties": {
         "spark.hadoop.fs.s3a.aws.credentials.provider": "software.amazon.awssdk.auth.credentials.WebIdentityTokenFileCredentialsProvider",
         "spark.sql.sources.fastS3PartitionDiscovery.enabled": "false"
       }
     }
   ]
   ```

1. 在 spark-submit 配置中，使用 Web 身份凭证提供程序。

   ```
   "spark.hadoop.fs.s3a.aws.credentials.provider=com.amazonaws.auth.WebIdentityTokenCredentialsProvider"
   ```