Solución de problemas comunes al utilizar Amazon EMR con Lake Formation de AWS - Amazon EMR

Solución de problemas comunes al utilizar Amazon EMR con Lake Formation de AWS

Esta sección le guía por el proceso de resolución de problemas comunes al utilizar Amazon EMR con AWS Lake Formation.

No se permite el acceso al lago de datos

Debe optar explícitamente por el filtrado de datos en los clústeres de Amazon EMR antes de poder analizar y procesar los datos de su lago de datos. Cuando se produzca un error en el acceso a los datos, verá un mensaje Access is not allowed genérico en el resultado de las entradas de su bloc de notas.

Para activar y permitir el filtrado de datos en Amazon EMR, consulte Permitir el filtrado de datos en Amazon EMR en la Guía para desarrolladores de AWS Lake Formation para obtener instrucciones.

Vencimiento de la sesión

El tiempo de espera para EMR Notebooks y Zeppelin se controla mediante el rol de IAM para la configuración Maximum CLI/API session duration de Lake Formation. El valor predeterminado para esta configuración es de una hora. Cuando se agote el tiempo de espera de una sesión, verá el siguiente mensaje en el resultado de las entradas de su bloc de notas al intentar ejecutar los comandos de Spark SQL.

Error 401 HTTP ERROR: 401 Problem accessing /sessions/2/statements. Reason: JWT token included in request failed validation. Powered by Jetty:// 9.3.24.v20180605 org.springframework.web.client.HttpClientErrorException: 401 JWT token included in request failed validation…

Para validar su sesión actualice la página. Se le pedirá que vuelva a autenticarse con su IdP y se le redirigirá de vuelta al bloc de notas. Puede continuar ejecutando consultas después de la segunda autenticación.

No hay permisos para el usuario en la tabla solicitada

Al intentar acceder a una tabla a la que no tiene acceso, verá la siguiente excepción en el resultado de las entradas de su bloc de notas al intentar ejecutar comandos de Spark SQL.

org.apache.spark.sql.AnalysisException: org.apache.hadoop.hive.ql.metadata.HiveException: Unable to fetch table table. Resource does not exist or requester is not authorized to access requested permissions. (Service: AWSGlue; Status Code: 400; Error Code: AccessDeniedException; Request ID: …

Para obtener acceso a la tabla, debe conceder acceso al usuario. Para ello, actualice los permisos asociados a esta tabla en Lake Formation.

Consulta de datos entre cuentas compartidos con Lake Formation

Al usar Amazon EMR para acceder a los datos compartidos desde otra cuenta, algunas bibliotecas de Spark intentarán llamar a la operación de la API Glue:GetUserDefinedFunctions. Como las versiones 1 y 2 de los permisos administrados de AWS RAM no admiten esta acción, obtiene el siguiente mensaje de error:

"ERROR: User: arn:aws:sts::012345678901:assumed-role/my-spark-role/i-06ab8c2b59299508a is not authorized to perform: glue:GetUserDefinedFunctions on resource: arn:exampleCatalogResource because no resource-based policy allows the glue:GetUserDefinedFunctions action"

Para resolver este error, el administrador del lago de datos que creó el recurso compartido debe actualizar los permisos administrados de AWS RAM asociados al recurso compartido. La versión 3 de los permisos administrados de AWS RAM permite a las entidades principales llevar a cabo la acción glue:GetUserDefinedFunctions.

Si crea un nuevo recurso compartido, Lake Formation aplica la última versión del permiso administrado por AWS RAM de forma predeterminada y no es necesario que haga nada. Para habilitar el acceso a los datos entre cuentas para los recursos compartidos existentes, debe actualizar los permisos administrados de AWS RAM a la versión 3.

Puede ver los permisos de AWS RAM asignados a los recursos compartidos en AWS RAM. Los siguientes permisos se incluyen en la versión 3:

Databases AWSRAMPermissionGlueDatabaseReadWriteForCatalog AWSRAMPermissionGlueDatabaseReadWrite Tables AWSRAMPermissionGlueTableReadWriteForCatalog AWSRAMPermissionGlueTableReadWriteForDatabase AllTables AWSRAMPermissionGlueAllTablesReadWriteForCatalog AWSRAMPermissionGlueAllTablesReadWriteForDatabase
Para actualizar la versión de los permisos administrados de AWS RAM de los recursos compartidos existentes

Como administrador del lago de datos, puede actualizar los permisos administrados de AWS RAM a una versión más reciente. Para ello, siga las instrucciones de la Guía del usuario de AWS RAM o revoque todos los permisos existentes para el tipo de recurso y vuelva a concederlos. Si revoca los permisos, AWS RAM elimina el recurso compartido de AWS RAM asociado al tipo de recurso. Al volver a conceder los permisos, AWS RAM adjunta la versión más reciente de los permisos administrados de AWS RAM para crear nuevos recursos compartidos.

Inserción, creación y alteración de tablas

No se admite la inserción, creación ni alteración de tablas en las bases de datos protegidas por políticas de Lake Formation. Al realizar estas operaciones, verá la siguiente excepción en el resultado de las entradas de su bloc de notas al intentar ejecutar los comandos de Spark SQL:

java.io.IOException: com.amazon.ws.emr.hadoop.fs.shaded.com.amazonaws.services.s3.model.AmazonS3Exception: Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: …

Para obtener más información, consulte Limitaciones de la integración de Amazon EMR con AWS Lake Formation.