Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Verwenden von Lake Formation mit Athena Spark-Arbeitsgruppen
Mit der Release-Version Apache Spark Version 3.5 können Sie AWS Glue Data Catalog nutzen, AWS Lake Formation bei dem die Rolle zur Sitzungsausführung über vollständige Tabellenberechtigungen verfügt. Mit dieser Funktion können Sie in Ihren interaktiven Athena Spark-Sitzungen Tabellen lesen und in Tabellen schreiben, die durch Lake Formation geschützt sind. In den folgenden Abschnitten erfahren Sie mehr über Lake Formation und wie Sie es mit Athena Spark verwenden können.
Schritt 1: Aktivieren Sie den vollständigen Tabellenzugriff in Lake Formation
Um den Modus Full Table Access (FTA) zu verwenden, müssen Sie Athena Spark erlauben, auf Daten zuzugreifen, ohne dass die IAM-Sitzungs-Tag-Validierung aktiviert ist. AWS Lake Formation Folgen Sie zur Aktivierung den Schritten unter Application integration for full table access.
Schritt 1.1: Registrieren Sie Datenstandorte in Lake Formation mithilfe einer benutzerdefinierten Rolle
Sie müssen eine benutzerdefinierte Rolle verwenden, um Datenspeicherorte in AWS Lake Formation zu registrieren. Einzelheiten finden Sie unter Anforderungen für Rollen, die zur Registrierung von Standorten verwendet werden.
Schritt 2: Richten Sie die IAM-Berechtigungen für die Ausführungsrolle für die Sitzung ein
Für den Lese- oder Schreibzugriff auf zugrunde liegende Daten benötigt die Ausführungsrolle zusätzlich zu den Lake Formation Formation-Berechtigungen die lakeformation:GetDataAccess IAM-Berechtigung. Mit dieser Berechtigung gewährt Lake Formation die Anforderung von temporären Anmeldeinformationen für den Zugriff auf die Daten.
Im Folgenden finden Sie eine Beispielrichtlinie für die Bereitstellung von IAM-Berechtigungen für den Zugriff auf ein Skript in Amazon S3, für das Hochladen von Protokollen auf S3, AWS Glue API-Berechtigungen und für den Zugriff auf Lake Formation.
Schritt 2.1: Lake Formation Formation-Berechtigungen konfigurieren
-
Spark-Jobs, die Daten aus S3 lesen, benötigen die Lake Formation
SELECTFormation-Genehmigung. -
Spark-Jobs, für die write/delete Daten in S3 ist die
ALL (SUPER)Genehmigung von Lake Formation erforderlich. -
Spark-Jobs, die mit dem AWS Glue Datenkatalog interagieren
DESCRIBEALTER, erfordern eine entsprechendeDROPGenehmigung.
Schritt 3: Initialisieren Sie eine Spark-Sitzung für den vollständigen Tabellenzugriff mit Lake Formation
Voraussetzungen
AWS GlueDer Datenkatalog muss als Metastore konfiguriert werden, um auf Lake Formation-Tabellen zugreifen zu können.
Legen Sie die folgenden Einstellungen fest, um den AWS Glue Katalog als Metastore zu konfigurieren:
{ "spark.hadoop.glue.catalogid": "ACCOUNT_ID", "spark.hadoop.hive.metastore.client.factory.class": "com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory", "spark.hadoop.hive.metastore.glue.catalogid": "ACCOUNT_ID", "spark.sql.catalogImplementation": "hive" }
Um auf Tabellen zuzugreifenAWS Lake Formation, bei denen registriert ist, müssen bei der Spark-Initialisierung die folgenden Konfigurationen festgelegt werden, damit Spark für die Verwendung AWS Lake Formation von Anmeldeinformationen konfiguriert wird.
Hive
{ "spark.hadoop.fs.s3.credentialsResolverClass": "com.amazonaws.glue.accesscontrol.AWSLakeFormationCredentialResolver", "spark.hadoop.fs.s3.useDirectoryHeaderAsFolderObject": "true", "spark.hadoop.fs.s3.folderObject.autoAction.disabled": "true", "spark.sql.catalog.skipLocationValidationOnCreateTable.enabled": "true", "spark.sql.catalog.createDirectoryAfterTable.enabled": "true", "spark.sql.catalog.dropDirectoryBeforeTable.enabled": "true" }
Apache Iceberg
{ "spark.sql.extensions": "io.delta.sql.DeltaSparkSessionExtension", "spark.sql.catalog.spark_catalog": "org.apache.iceberg.spark.SparkSessionCatalog", "spark.sql.catalog.spark_catalog.warehouse": "s3://your-bucket/warehouse/", "spark.sql.catalog.spark_catalog.client.region": "REGION", "spark.sql.catalog.spark_catalog.catalog-impl": "org.apache.iceberg.aws.glue.GlueCatalog", "spark.sql.catalog.spark_catalog.glue.account-id": "ACCOUNT_ID", "spark.sql.catalog.spark_catalog.glue.lakeformation-enabled": "true" }
Amazon S3 Tables
{ "spark.sql.extensions": "io.delta.sql.DeltaSparkSessionExtension", "spark.sql.catalog.{catalogName}": "org.apache.iceberg.spark.SparkCatalog", "spark.sql.catalog.{catalogName}.warehouse": "arn:aws:s3tables:{region}:{accountId}:bucket/{bucketName}", "spark.sql.catalog.{catalogName}.catalog-impl": "org.apache.iceberg.aws.glue.GlueCatalog", "spark.sql.catalog.{catalogName}.glue.id": "{accountId}:s3tablescatalog/{bucketName}", "spark.sql.catalog.{catalogName}.glue.lakeformation-enabled": "true", "spark.sql.catalog.{catalogName}.client.region": "REGION", "spark.sql.catalog.{catalogName}.glue.account-id": "ACCOUNT_ID" }
Delta Lake
{ "spark.sql.extensions": "io.delta.sql.DeltaSparkSessionExtension", "spark.sql.catalog.spark_catalog": "org.apache.spark.sql.delta.catalog.DeltaCatalog", "spark.hadoop.fs.s3.credentialsResolverClass": "com.amazonaws.glue.accesscontrol.AWSLakeFormationCredentialResolver", "spark.hadoop.fs.s3.useDirectoryHeaderAsFolderObject": "true", "spark.hadoop.fs.s3.folderObject.autoAction.disabled": "true", "spark.sql.catalog.skipLocationValidationOnCreateTable.enabled": "true", "spark.sql.catalog.createDirectoryAfterTable.enabled": "true", "spark.sql.catalog.dropDirectoryBeforeTable.enabled": "true" }
Überlegungen und Einschränkungen
-
Full Table Access wird für Hive-, Iceberg-, Amazon S3 S3-Tabellen und Delta-Tabellen unterstützt. Hudi-Tabellen unterstützen keinen vollständigen Tabellenzugriff.
-
Um einer aktiven Sitzung neue Kataloge hinzuzufügen, verwenden Sie die Option
spark.conf.setmit neuen Katalogkonfigurationen. -
Katalogkonfigurationen sind unveränderlich. Wenn Sie eine Katalogkonfiguration aktualisieren möchten, erstellen Sie einen neuen Katalog mit.
spark.conf.set -
Fügen Sie der Spark-Sitzung nur Kataloge hinzu, die Sie benötigen.
-
Um den Standardkatalog zu ändern:
spark.catalog.setCurrentCatalog("s3tablesbucket") -
Wenn Ihr Katalogname Sonderzeichen enthält,
-maskieren Sie sie in Ihrer Abfrage wie:SELECT sales_amount as nums FROM `my-s3-tables-bucket`.`s3namespace`.`daily_sales` LIMIT 100