Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Utilizzo di Lake Formation con i gruppi di lavoro Athena Spark
Con la versione di rilascio di Apache Spark versione 3.5, puoi sfruttare AWS Lake Formation AWS Glue Data Catalog in cui il ruolo di esecuzione della sessione dispone delle autorizzazioni complete per la tabella. Questa funzionalità consente di leggere e scrivere su tabelle protette da Lake Formation dalle sessioni interattive di Athena Spark. Consulta le seguenti sezioni per saperne di più su Lake Formation e su come usarlo con Athena Spark.
Passaggio 1: abilitare l'accesso completo alla tabella in Lake Formation
Per utilizzare la modalità Full Table Access (FTA), devi consentire ad Athena Spark di accedere ai dati senza la convalida del tag di sessione IAM. AWS Lake Formation Per abilitarli, seguire i passaggi descritti in Integrazione delle applicazioni per l'accesso completo alla tabella.
Passaggio 1.1: Registrare le posizioni dei dati in Lake Formation utilizzando il ruolo definito dall'utente
È necessario utilizzare un ruolo definito dall'utente per registrare le posizioni dei dati inAWS Lake Formation. Per ulteriori dettagli, consulta Requisiti per i ruoli utilizzati per registrare le posizioni.
Fase 2: Configurazione delle autorizzazioni IAM per il ruolo di esecuzione della sessione
Per l'accesso in lettura o scrittura ai dati sottostanti, oltre alle autorizzazioni di Lake Formation, il ruolo di esecuzione richiede l'autorizzazione lakeformation:GetDataAccess IAM. Con questa autorizzazione, Lake Formation concede la richiesta di credenziali temporanee per accedere ai dati.
Di seguito è riportato un esempio di politica su come fornire autorizzazioni IAM per accedere a uno script in Amazon S3, caricare i log su S3, autorizzazioni API e autorizzazioni per accedere a Lake Formation. AWS Glue
Passaggio 2.1: Configurare i permessi di Lake Formation
-
I job Spark che leggono dati da S3 richiedono l'autorizzazione di Lake Formation
SELECT. -
Spark rileva che write/delete i dati in S3 richiedono l'autorizzazione di Lake Formation
ALL (SUPER). -
I job Spark che interagiscono con AWS Glue Data catalog richiedono l'
DROPautorizzazioneDESCRIBEALTER, se del caso.
Passaggio 3: inizializza una sessione Spark per l'accesso completo alla tabella utilizzando Lake Formation
Prerequisiti
AWS GlueData Catalog deve essere configurato come metastore per accedere alle tabelle di Lake Formation.
Imposta le seguenti impostazioni per configurare il AWS Glue catalogo come metastore:
{ "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" }
Per accedere alle tabelle registrate conAWS Lake Formation, è necessario impostare le seguenti configurazioni durante l'inizializzazione di Spark per configurare Spark per l'utilizzo delle credenziali. AWS Lake Formation
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" }
Tabelle di Amazon S3
{ "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" }
Considerazioni e limitazioni
-
L'accesso completo alla tabella è supportato per le tabelle Hive, Iceberg, Amazon S3 e le tabelle Delta. Le tabelle Hudi non supportano l'accesso completo alla tabella.
-
Per aggiungere nuovi cataloghi a una sessione attiva, utilizzare
spark.conf.setcon nuove configurazioni di catalogo. -
Le configurazioni del catalogo sono immutabili. Se desideri aggiornare una configurazione del catalogo, crea un nuovo catalogo utilizzando.
spark.conf.set -
Aggiungi solo i cataloghi di cui hai bisogno alla sessione Spark.
-
Per modificare il catalogo predefinito:
spark.catalog.setCurrentCatalog("s3tablesbucket") -
Se nel nome del catalogo sono presenti caratteri speciali come:
-SELECT sales_amount as nums FROM `my-s3-tables-bucket`.`s3namespace`.`daily_sales` LIMIT 100