

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Accès aux tables Amazon S3 avec Amazon EMR
<a name="s3-tables-integrating-emr"></a>

Amazon EMR (anciennement Amazon Elastic MapReduce) est une plateforme de clusters gérés qui simplifie l'exécution de frameworks de mégadonnées, tels que le AWS traitement Apache Hadoop et Apache Spark l'analyse de grandes quantités de données. Grâce à ces infrastructures et des projets open source connexes, vous pouvez traiter des données à des fins d’analyse et pour des charges de travail business intelligence. Amazon EMR vous permet également de transformer et de transférer de grandes quantités de données vers et depuis d'autres banques de données et bases de AWS données.

Vous pouvez utiliser des clusters Apache Iceberg dans Amazon EMR pour travailler avec les tables S3 en vous connectant à des compartiments de tables au cours d’une session Spark. Pour vous connecter aux compartiments de tables dans Amazon EMR, vous pouvez utiliser AWS l'intégration des services d'analyse AWS Glue Data Catalog via ou utiliser le catalogue de tables Amazon S3 open source Apache Iceberg pour le catalogue client.

**Note**  
S3 Tables est pris en charge sur [Amazon EMR version 7.5](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-release-components.html) ou supérieure.

## Connexion à des compartiments de tables S3 avec Spark sur un cluster Amazon EMR Iceberg
<a name="emr-setup-cluster-spark"></a>

Dans cette procédure, vous configurez un cluster Amazon EMR configuré pour Apache Iceberg, puis vous lancez une session Spark qui se connecte à vos compartiments de table. Vous pouvez le configurer à l'aide de l'intégration des services d' AWS analyse AWS Glue, ou vous pouvez utiliser le catalogue de tables Amazon S3 open source pour Apache Iceberg le catalogue client. Pour obtenir des informations sur le catalogue client, consultez [Accès aux tables à l’aide du point de terminaison Iceberg REST d’Amazon S3 Tables](s3-tables-integrating-open-source.md). 

Choisissez votre méthode d’utilisation des tables avec Amazon EMR parmi les options suivantes.

------
#### [ Amazon S3 Tables Catalog for Apache Iceberg ]

Les prérequis suivants sont nécessaires pour interroger des tables avec Spark sur Amazon EMR en utilisant le catalogue d’Amazon S3 Tables pour Apache Iceberg.

Pour obtenir la dernière version du fichier JAR du catalogue client, consultez le référentiel [ GitHub s3-tables-catalog](https://github.com/awslabs/s3-tables-catalog).

**Conditions préalables**
+ Attachez la politique `AmazonS3TablesFullAccess` au rôle IAM que vous utilisez pour Amazon EMR.

**Pour configurer un cluster Amazon EMR afin d’interroger les tables avec Spark**

1. Créez un cluster avec la configuration suivante. Pour utiliser cet exemple, remplacez les `user input placeholders` par vos propres informations.

   ```
   aws emr create-cluster --release-label emr-7.5.0 \
   --applications Name=Spark \
   --configurations file://configurations.json \
   --region us-east-1 \
   --name My_Spark_Iceberg_Cluster \
   --log-uri s3://amzn-s3-demo-bucket/ \
   --instance-type m5.xlarge \
   --instance-count 2 \
   --service-role EMR_DefaultRole \
   --ec2-attributes \
   
   InstanceProfile=EMR_EC2_DefaultRole,SubnetId=subnet-1234567890abcdef0,KeyName=my-key-pair
   ```

   `configurations.json`:

   ```
   [{
   "Classification":"iceberg-defaults",
   "Properties":{"iceberg.enabled":"true"}
   }]
   ```

1. [Connectez-vous au nœud primaire Spark à l’aide de SSH.](https://docs.aws.amazon.com//emr/latest/ManagementGuide/emr-connect-master-node-ssh.html#emr-connect-cli)

1. Pour initialiser une session Spark pour Iceberg qui se connecte à votre compartiment de tables, entrez la commande suivante. Remplacez les `user input placeholders` par l’ARN de votre compartiment de table.

   ```
   spark-shell \
   --packages software.amazon.s3tables:s3-tables-catalog-for-iceberg-runtime:0.1.8 \
   --conf spark.sql.catalog.s3tablesbucket=org.apache.iceberg.spark.SparkCatalog \
   --conf spark.sql.catalog.s3tablesbucket.catalog-impl=software.amazon.s3tables.iceberg.S3TablesCatalog \
   --conf spark.sql.catalog.s3tablesbucket.warehouse=arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-bucket1 \
   --conf spark.sql.defaultCatalog=s3tablesbucket \
   --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions
   ```

1. Interrogez vos tables avec Spark SQL. Pour voir des exemples de requêtes, consultez [Interrogation des tables S3 avec Spark SQL](s3-tables-client-catalog.md#query-with-spark).

------
#### [ AWS analytics services integration ]

Les conditions préalables suivantes sont requises pour interroger des tables Spark sur Amazon EMR à l'aide de AWS l'intégration des services d'analyse.

**Conditions préalables**
+ [Intégrez vos compartiments de table aux services AWS d'analyse](s3-tables-integrating-aws.md).
+ Créez le rôle de service par défaut pour Amazon EMR (`EMR_DefaultRole_V2`). Pour plus de détails, consultez [Rôle de service pour Amazon EMR (rôle EMR)](https://docs.aws.amazon.com//emr/latest/ManagementGuide/emr-iam-role.html).
+ Créez un profil d’instance Amazon EC2 pour Amazon EMR (`EMR_EC2_DefaultRole`). Pour plus de détails, consultez [Rôle de service pour les instances EC2 de cluster (profil d’instance EC2)](https://docs.aws.amazon.com//emr/latest/ManagementGuide/emr-iam-role-ec2.html). 
  + Attachez la politique `AmazonS3TablesFullAccess` à `EMR_EC2_DefaultRole`.

**Pour configurer un cluster Amazon EMR afin d’interroger les tables avec Spark**

1. Créez un cluster avec la configuration suivante. Pour utiliser cet exemple, remplacez les `user input placeholder` par vos propres informations.

   ```
   aws emr create-cluster --release-label emr-7.5.0 \
   --applications Name=Spark \
   --configurations file://configurations.json \
   --region us-east-1 \
   --name My_Spark_Iceberg_Cluster \
   --log-uri s3://amzn-s3-demo-bucket/ \
   --instance-type m5.xlarge \
   --instance-count 2 \
   --service-role EMR_DefaultRole \
   --ec2-attributes \
   
   InstanceProfile=EMR_EC2_DefaultRole,SubnetId=subnet-1234567890abcdef0,KeyName=my-key-pair
   ```

   `configurations.json`:

   ```
   [{
   "Classification":"iceberg-defaults",
   "Properties":{"iceberg.enabled":"true"}
   }]
   ```

1. [Connectez-vous au nœud primaire Spark à l’aide de SSH.](https://docs.aws.amazon.com//emr/latest/ManagementGuide/emr-connect-master-node-ssh.html#emr-connect-cli)

1. Entrez la commande suivante pour initialiser une session Spark pour Iceberg qui se connecte à vos tables. Remplacez les `user input placeholders` pour Région, et ID du compte et le nom du compartiment de table par vos propres informations.

   ```
   spark-shell \
   --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions \
   --conf spark.sql.defaultCatalog=s3tables \
   --conf spark.sql.catalog.s3tables=org.apache.iceberg.spark.SparkCatalog \
   --conf spark.sql.catalog.s3tables.catalog-impl=org.apache.iceberg.aws.glue.GlueCatalog \
   --conf spark.sql.catalog.s3tables.client.region=us-east-1 \
   --conf spark.sql.catalog.s3tables.glue.id=111122223333:s3tablescatalog/amzn-s3-demo-table-bucket
   ```

1. Interrogez vos tables avec Spark SQL. Pour voir des exemples de requêtes, consultez [Interrogation des tables S3 avec Spark SQL](s3-tables-client-catalog.md#query-with-spark).

------

**Note**  
Si vous utilisez la commande `DROP TABLE PURGE` avec Amazon EMR :  
Amazon EMR version 7.5  
Définissez la configuration Spark `spark.sql.catalog.your-catalog-name.cache-enabled` sur `false`. Si cette configuration est définie sur `true`, exécutez la commande dans une nouvelle session ou application pour que le cache de table ne soit pas activé.
Amazon EMR versions supérieures à 7.5  
`DROP TABLE` n’est pas pris en charge. Vous pouvez utiliser l’API REST `DeleteTable` de S3 Tables pour supprimer une table.