Zugreifen auf Amazon S3 Tables mit Amazon EMR
Bei Amazon EMR (früher Amazon Elastic MapReduce genannt) handelt es sich um eine verwaltete Cluster-Plattform, die die Ausführung von Big-Data-Frameworks wie Apache Hadoop und Apache Spark in AWS vereinfacht, um riesige Datenmengen zu verarbeiten und zu analysieren. Die Verwendung dieser Frameworks und verwandter Open-Source-Projekte, können Sie Daten zu Analysezwecken und Business-Intelligence-Workloads verarbeiten. Mit Amazon EMR können Sie auch große Datenmengen transformieren und sie in oder aus andere(n) AWS-Datenspeicher(n) oder -Datenbanken verschieben.
Sie können Apache Iceberg-Cluster in Amazon EMR verwenden, um mit S3-Tabellen zu arbeiten, indem Sie in einer Spark-Sitzung eine Verbindung zu Tabellen-Buckets herstellen. Um eine Verbindung zu Tabellen-Buckets in Amazon EMR herzustellen, können Sie die Integration in AWS-Analytikdienste über AWS Glue Data Catalog oder den Open-Source-Katalog von Amazon S3 Tables für den Client-Katalog von Apache Iceberg verwenden.
Herstellen einer Verbindung zu S3-Table-Buckets mit Spark auf einem Iceberg-Cluster von Amazon EMR
In diesem Verfahren richten Sie einen Amazon-EMR-Cluster ein, der für Apache Iceberg konfiguriert ist, und starten dann eine Spark-Sitzung, die eine Verbindung zu Ihren Tabellen-Buckets herstellt. Sie können dies über die Integration der AWS-Analytikservices einrichten über AWS Glue oder den Open-Source-Katalog Amazon S3 Tables Catalog für den Client-Katalog von Apache Iceberg verwenden. Weitere Informationen über den Client-Katalog finden Sie unter Zugreifen auf Tabellen über den Amazon S3 Tables Iceberg REST-Endpunkt.
Wählen Sie aus den folgenden Optionen Ihre Methode zur Verwendung von Tabellen mit Amazon EMR aus.
- Amazon S3 Tables Catalog for Apache Iceberg
-
Die folgenden Voraussetzungen müssen erfüllt sein, um Tabellen mit Spark in Amazon EMR mithilfe des Katalogs von Amazon S3 Tables für Apache Iceberg abzufragen.
So richten Sie einen Amazon-EMR-Cluster für die Abfrage von Tabellen mit Spark ein
Erstellen Sie einen Cluster mit der folgenden Konfiguration. Wenn Sie dieses Beispiel verwenden möchten, ersetzen Sie die user input placeholders (Platzhalter für Benutzereingaben) durch Ihre Informationen.
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"}
}]
-
Verbinden Sie sich über SSH mit dem Spark-Primärknoten.
-
Um eine Spark-Sitzung für Iceberg zu initialisieren, die eine Verbindung zu Ihrem Tabellen-Bucket herstellt, geben Sie den folgenden Befehl ein. Ersetzen Sie den user input placeholders durch den ARN Ihres Tabellen-Buckets.
spark-shell \
--packages software.amazon.s3tables:s3-tables-catalog-for-iceberg-runtime:0.1.3 \
--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
-
Fragen Sie Ihre Tabellen mit Spark SQL ab. Beispiele für Abfragen finden Sie unter Abfragen von S3 Tables mit Spark.
- AWS analytics services integration
-
Die folgenden Voraussetzungen müssen erfüllt sein, um Tabellen mit Spark in Amazon EMR mithilfe der Integration in AWS-Analytikdienste abzufragen.
So richten Sie einen Amazon-EMR-Cluster für die Abfrage von Tabellen mit Spark ein
Erstellen Sie einen Cluster mit der folgenden Konfiguration. Wenn Sie dieses Beispiel verwenden möchten, ersetzen Sie die user input placeholder-Werte durch Ihre Informationen.
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"}
}]
-
Verbinden Sie sich über SSH mit dem Spark-Primärknoten.
-
Geben Sie den folgenden Befehl ein, um eine Spark-Sitzung für Iceberg zu initialisieren, die eine Verbindung zu Ihren Tabellen herstellt. Ersetzen Sie die user
input placeholders für Region, Konto-ID und Tabellen-Bucket-Name durch Ihre eigenen Daten.
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
-
Fragen Sie Ihre Tabellen mit Spark SQL ab. Beispiele für Abfragen finden Sie unter Abfragen von S3 Tables mit Spark.
Wenn Sie den Befehl DROP TABLE PURGE mit Amazon EMR verwenden:
Amazon EMR Version 7.5
Setzen Sie die Spark-Konfiguration spark.sql.catalog.your-catalog-name.cache-enabled auf false. Ist diese Konfiguration auf true gesetzt, führen Sie den Befehl in einer neuen Sitzung oder Anwendung aus, sodass der Tabellen-Cache nicht aktiviert wird.
-
Amazon EMR-Versionen höher als 7.5
DROP TABLE wird nicht unterstützt. Verwenden Sie die REST-API DeleteTable von S3 Tables, um eine Tabelle zu löschen.