本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 EMR Serverless 將資料取得至 S3 Express One Zone
透過 Amazon EMR 7.2.0 及更高版本,您可以在執行任務和工作負載時搭配 Amazon S3 Express One Zone 儲存類別使用 EMR Serverless,以提高效能。S3 Express One Zone 是一種高效能的單區域 Amazon S3 儲存類別,可為對大多數延遲敏感的應用程式提供一致的單一位數毫秒資料存取。在發布時,S3 Express One Zone 提供 Amazon S3 中最低延遲和最高效能的雲端物件儲存。
先決條件
-
S3 Express One Zone 許可 – 當 S3 Express One Zone 最初在 S3 物件
PUT
上執行GET
、LIST
或 等動作時,儲存類別CreateSession
會代表您呼叫 。您的 IAM 政策必須允許s3express:CreateSession
許可,S3A 連接器才能調用CreateSession
API。如需具有此許可的範例政策,請參閱 開始使用 S3 Express One Zone。 -
S3A 連接器 – 若要設定 Spark 從使用 Amazon S3 S3 儲存貯體存取資料,您必須使用 Apache Hadoop 連接器 S3A。若要使用該連接器,請確保所有 S3 URI 均使用
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" } } ]
開始使用 S3 Express One Zone
請依照下列步驟開始使用 S3 Express One Zone。
-
建立 VPC 端點。將端點
com.amazonaws.us-west-2.s3express
新增至 VPC 端點。 -
遵循 Amazon EMR Serverless 入門來建立具有 Amazon EMR 發行標籤 7.2.0 或更新版本的應用程式。
-
將應用程式設定為使用新建立的 VPC 端點、私有子網路群組和安全群組。
-
將
CreateSession
許可新增至您的任務執行角色。 -
執行您的任務。請注意,您必須使用
S3A
配置來存取 S3 Express One Zone 儲存貯體。aws emr-serverless start-job-run \ --application-id
<application-id>
\ --execution-role-arn<job-role-arn>
\ --name<job-run-name>
\ --job-driver '{ "sparkSubmit": { "entryPoint": "s3a://<DOC-EXAMPLE-BUCKET>
/scripts/wordcount.py", "entryPointArguments":["s3a://<DOC-EXAMPLE-BUCKET>
/emr-serverless-spark/output"], "sparkSubmitParameters": "--conf spark.executor.cores=4 --conf spark.executor.memory=8g --conf spark.driver.cores=4 --conf spark.driver.memory=8g --conf spark.executor.instances=2 --conf spark.hadoop.fs.s3a.change.detection.mode=none --conf spark.hadoop.fs.s3a.endpoint.region={<AWS_REGION>
} --conf spark.hadoop.fs.s3a.select.enabled=false --conf spark.sql.sources.fastS3PartitionDiscovery.enabled=false }'