Solución de errores de tabla - Amazon Athena

Solución de errores de tabla

Utilice la información de esta sección para resolver errores de tabla de Athena para Spark.

No se puede crear un error de ruta al crear una tabla

Mensaje de error: IllegalArgumentException: Cannot create a path from an empty string. (IllegalArgumentException: no se puede crear una ruta a partir de una cadena vacía).

Causa: este error puede producirse cuando usa Apache Spark en Athena para crear una tabla en una base de datos de AWS Glue y la base de datos tiene una propiedad LOCATION vacía.

Solución sugerida: para obtener más información y soluciones, consulte Excepción de argumento ilegal al crear una tabla.

AccessDeniedException al consultar tablas de AWS Glue

Mensaje de error: pyspark.sql.utils.AnalysisException: Unable to verify existence of default database: com.amazonaws.services.glue.model.AccessDeniedException: User: arn:aws:sts::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) (pyspark.sql.utils.AnalysisException: no se puede verificar la existencia de la base de datos predeterminada: com.amazonaws.services.glue.model.AccessDeniedException: El usuario: arn:aws:sts::aws-account-id:assumed-role/AWSAthenaSparkExecutionRole-unique-identifier/AthenaExecutor-unique-identifier no está autorizado a realizar: glue:GetDatabase en el recurso: arn:aws:glue:aws-region:aws-account-id:catalog porque ninguna política basada en identidades permite la acción glue:GetDatabase [Servicio: AWSGlue; Código de estado: 400; Código de error: AccessDeniedException; ID de solicitud: request-id; Proxy: null]).

Causa: al rol de ejecución de su grupo de trabajo habilitado para Spark le faltan permisos para acceder a los recursos de AWS Glue.

Solución sugerida: para resolver este problema, conceda a su rol de ejecución acceso a los recursos de AWS Glue y, a continuación, edite la política de su bucket de Amazon S3 para conceder acceso a su rol de ejecución.

En las siguientes secciones se describen los pasos de manera más detallada.

Para conceder a su rol de ejecución acceso a los recursos de AWS Glue
  1. Abra la consola de Athena en https://console.aws.amazon.com/athena/.

  2. Si el panel de navegación de la consola no está visible, elija el menú de expansión de la izquierda.

    Elija el menú de expansión.
  3. En el panel de navegación de la consola de Athena, elija Grupos de trabajo.

  4. En la página Grupos de trabajo, elija el enlace del grupo de trabajo que quiere ver.

  5. En la página Overview Details (Detalles de información general) del grupo de trabajo, elija el enlace Role ARN (ARN del rol). El enlace abre el rol de ejecución de Spark en la consola de IAM.

  6. En la sección Permissions policies (Políticas de permisos), seleccione el nombre de la política de rol vinculada.

  7. Elija Edit policy (Editar política) y, a continuación, elija JSON.

  8. Agregue acceso a AWS Glue al rol. Normalmente, se agregan permisos para las acciones glue:GetDatabase y glue:GetTable. Para obtener más información sobre la configuración de roles de IAM, consulte Adición y eliminación de permisos de identidad de IAM en la guía del usuario de IAM.

  9. Elija Revisar política y, a continuación, elija Guardar cambios.

  10. Edite la política de su bucket de Amazon S3 para conceder acceso al rol de ejecución. Tenga en cuenta que debe conceder al rol acceso tanto al bucket como a los objetos del bucket. Para conocer los pasos, consulte Agregar una política de bucket mediante la consola de Amazon S3 en la guía del usuario de Amazon Simple Storage Service.