Risoluzione degli errori relativi alle tabelle
Utilizzare le informazioni in questa sezione per risolvere gli errori delle tabelle di Athena per Spark.
Impossibile creare un errore di percorso durante la creazione di una tabella
Messaggio di errore: IllegalArgumentException: Cannot create a path from an empty string. (Eccezione argomento non valido: impossibile creare un percorso da una stringa vuota.)
Causa: questo errore può verificarsi quando si utilizza Apache Spark in Athena per creare una tabella in un database AWS Glue e il database ha una proprietà LOCATION vuota.
Soluzione consigliata: per ulteriori informazioni e soluzioni, consulta la pagina Eccezione di argomento illegale durante la creazione di una tabella.
AccessDenidException durante l'esecuzione di query sulle tabelle AWS Glue
Messaggio di errore: pyspark.sql.utils.AnalysisException: Unable to verify existence of default database: com.amazonaws.services.glue.model.AccessDeniedException: User: arn:aws:sts:: (pyspark.sql.utils.AnalysisException: impossibile verificare l'esistenza del database predefinito: com.amazonaws.services.glue.model.AccessDenidException: L'utente: arn:aws:sts::aws-account-id:assumed-role/AWSAthenaSparkExecutionRole-unique-identifier/AthenaExecutor-unique-identifier non è autorizzato a eseguire: glue:GetDatabase sulla risorsa: arn:aws:glue:aws-region:aws-account-id:catalog perché nessuna policy basata sull'identità consente l'operazione glue:GetDatabase [servizio: AWSGlue; codice di stato: 400; codice di errore: AccessDeniedException; ID richiesta: request-id; proxy: null])aws-account-id:assumed-role/AWSAthenaSparkExecutionRole-unique-identifier/AthenaExecutor-unique-identifier is not authorized to perform: glue:GetDatabase on resource: arn:aws:glue:aws-region:aws-account-id:catalog because no identity-based policy allows the glue:GetDatabase action (Service: AWSGlue; Status Code: 400; Error Code: AccessDeniedException; Request ID: request-id; Proxy: null)
Causa: nel ruolo di esecuzione del gruppo di lavoro abilitato per Spark mancano le autorizzazioni per accedere alle risorse AWS Glue.
Soluzione consigliata: per risolvere questo problema, concedi al ruolo di esecuzione l'accesso alle risorse AWS Glue, quindi modifica la policy dei bucket Amazon S3 per concedere l'accesso al ruolo di esecuzione.
La seguente procedura descrive in modo più dettagliato questi passaggi.
Concessione al ruolo di esecuzione dell'accesso alle risorse AWS Glue
Aprire la console Athena all'indirizzo https://console.aws.amazon.com/athena/
. Se il pannello di navigazione della console non è visibile, scegli il menu di espansione a sinistra.
-
Nel pannello di navigazione della console Athena, scegli Workgroups (Gruppi di lavoro).
-
Nella pagina Workgroups (Gruppi di lavoro), scegli il collegamento del gruppo di lavoro che desideri visualizzare.
-
Nella pagina Overview Details (Dettagli della panoramica) del gruppo di lavoro, scegli il collegamento Role ARN (ARN del ruolo). Il link apre il ruolo di esecuzione Spark nella console IAM.
-
Nella sezione Permissions policies (Policy autorizzazioni), scegli il nome della policy del ruolo con link.
-
Scegli Edit policy (Modifica policy), quindi scegli JSON.
-
Aggiungi l'accesso AWS Glue al ruolo. In genere, si aggiungono le autorizzazioni per le operazioni
glue:GetDatabaseeglue:GetTable. Per ulteriori informazioni sulla configurazione dei ruoli IAM, consulta la pagina Adding and removing IAM identity permissions (Aggiunta e rimozione di autorizzazioni per identità IAM) nella Guida per l'utente di IAM. -
Scegli Review policy (Esamina policy) e quindi Save changes (Salva modifiche).
-
Modifica la policy del bucket Amazon S3 per concedere l'accesso al ruolo di esecuzione. Nota che devi concedere al ruolo l'accesso sia al bucket sia agli oggetti al suo interno. Per i passaggi dettagliati, consulta la pagina Adding a bucket policy using the Amazon S3 console (Aggiunta di una policy del bucket utilizzando la console Amazon S3) nella Guida per l'utente di Amazon Simple Storage Service.