Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Acceso sin filtros a Lake Formation para EMR Serverless
Con las versiones 7.8.0 y posteriores de Amazon EMR, puede aprovechar AWS Lake Formation con Glue Data Catalog, donde el rol de ejecución de tareas tiene permisos de tabla completos sin las limitaciones de un control de acceso detallado. Esta capacidad le permite leer y escribir en tablas protegidas por Lake Formation desde sus trabajos interactivos y por lotes de EMR Serverless Spark. Consulte las siguientes secciones para obtener más información sobre Lake Formation y cómo usarlo con EMR sin servidor.
Uso de Lake Formation con acceso completo a la mesa
Puede acceder a las tablas del catálogo de Glue Data protegidas por AWS Lake Formation desde trabajos de EMR Serverless Spark o sesiones interactivas en las que el rol de tiempo de ejecución del trabajo tiene acceso completo a las tablas. No es necesario que habilite AWS Lake Formation en la aplicación EMR Serverless. Cuando un trabajo de Spark está configurado para el acceso total a la tabla (FTA), las credenciales de AWS Lake Formation se utilizan para los datos de read/write S3 de las tablas registradas de AWS Lake Formation, mientras que las credenciales del rol de tiempo de ejecución del trabajo se utilizan para read/write las tablas no registradas en AWS Lake Formation.
importante
No habilite AWS Lake Formation para un control de acceso detallado. Un trabajo no puede ejecutar simultáneamente Full Table Access (FTA) y Fine-Grained Access Control (FGAC) en el mismo clúster o aplicación de EMR.
Paso 1: Habilitar el acceso completo a la mesa en Lake Formation
Para utilizar el modo Full Table Access (FTA), debe permitir que los motores de consulta de terceros accedan a los datos sin la validación de etiquetas de sesión de IAM en AWS Lake Formation. Para habilitarlo, siga los pasos descritos en Integración de aplicaciones para acceso completo a la tabla .
nota
Al acceder a tablas multicuentas, se debe habilitar el acceso completo a las tablas tanto en las cuentas de productores como en las de consumidores. Del mismo modo, al acceder a las tablas entre regiones, esta configuración debe estar habilitada tanto en las regiones productoras como en las de consumidores.
Paso 2: configuración de los permisos de IAM para el rol en tiempo de ejecución del trabajo
Para el acceso de lectura o escritura a los datos subyacentes, además de los permisos de Lake Formation, un rol de ejecución de tareas necesita el permiso de lakeformation:GetDataAccess
IAM. Con este permiso, Lake Formation concede la solicitud de credenciales temporales para acceder a los datos.
El siguiente es un ejemplo de política sobre cómo proporcionar permisos de IAM para acceder a un script en Amazon S3, cargar registros en S3, permisos de la API AWS Glue y permiso para acceder a Lake Formation.
Paso 2.1 Configurar los permisos de Lake Formation
Los trabajos de Spark que leen datos de S3 requieren el permiso Lake Formation SELECT.
Los trabajos de Spark write/delete cuyos datos en S3 requieren el permiso de Lake Formation ALL (SUPER).
Los trabajos de Spark que interactúan con el catálogo de Glue Data requieren los permisos DESCRIBIR, ALTER y DROP, según corresponda.
Para obtener más información, consulte Otorgar permisos sobre los recursos del catálogo de datos.
Paso 3: Inicializa una sesión de Spark para tener acceso completo a la mesa mediante Lake Formation
Requisitos previos
AWS El catálogo de datos de Glue debe configurarse como un metaalmacén para acceder a las tablas de Lake Formation.
Defina los siguientes ajustes para configurar el catálogo de Glue como un metaalmacén:
--conf spark.sql.catalogImplementation=hive --conf spark.hive.metastore.client.factory.class=com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory
Para obtener más información sobre cómo habilitar el catálogo de datos para EMR Serverless, consulte Configuración de Metastore para EMR Serverless.
Para acceder a las tablas registradas en AWS Lake Formation, se deben establecer las siguientes configuraciones durante la inicialización de Spark para configurar Spark para que use las credenciales de AWS Lake Formation.
-
spark.hadoop.fs.s3.credentialsResolverClass=com.amazonaws.glue.accesscontrol.AWSLakeFormationCredentialResolver
: Configure el sistema de archivos EMR (EMRFS) para usar las credenciales S3 de Lake Formation para las tablas registradas de AWS Lake Formation. Si la tabla no está registrada, utilice las credenciales del rol en tiempo de ejecución del trabajo. -
spark.hadoop.fs.s3.useDirectoryHeaderAsFolderObject=true
yspark.hadoop.fs.s3.folderObject.autoAction.disabled=true
: configure EMRFS para que utilice el encabezado de tipo de contenido application/x-directory en lugar del sufijo $folder$ al crear carpetas en S3. Esto es obligatorio al leer las tablas de Lake Formation, ya que las credenciales de Lake Formation no permiten leer carpetas de tablas con el sufijo $folder$. -
spark.sql.catalog.skipLocationValidationOnCreateTable.enabled=true
: configure Spark para omitir la validación de que la ubicación de la tabla esté vacía antes de crearla. Esto es necesario para las tablas registradas de Lake Formation, ya que las credenciales de Lake Formation para verificar la ubicación vacía solo están disponibles después de crear la tabla de Glue Data Catalog. Sin esta configuración, las credenciales del rol en tiempo de ejecución del trabajo validarán si la ubicación de la tabla está vacía. -
spark.sql.catalog.createDirectoryAfterTable.enabled=true
: configure Spark para crear la carpeta en Amazon S3 después de crear la tabla en el repositorio de metadatos de Hive. Esto es obligatorio para las tablas registradas de Lake Formation, ya que las credenciales de Lake Formation para crear la carpeta S3 solo están disponibles después de crear la tabla de Glue Data Catalog. -
spark.sql.catalog.dropDirectoryBeforeTable.enabled=true
: Configura Spark para que borre la carpeta S3 en el metabastore de Hive antes de eliminar la tabla. Esto es necesario para las tablas registradas de Lake Formation, ya que las credenciales de Lake Formation para eliminar la carpeta S3 no están disponibles después de eliminar la tabla del catálogo de datos de Glue. -
spark.sql.catalog.<catalog>.glue.lakeformation-enabled=true
: Configure el catálogo de Iceberg para usar las credenciales S3 de AWS Lake Formation para las tablas registradas de Lake Formation. Si la tabla no está registrada, utilice las credenciales predeterminadas del entorno.
Configure el modo de acceso completo a las tablas en SageMaker Unified Studio
Para acceder a las tablas registradas de Lake Formation desde las sesiones interactivas de Spark en JupyterLab cuadernos, debes usar el modo de permiso de compatibilidad. Usa el comando mágico %%configure para configurar tu configuración de Spark. Elija la configuración según el tipo de tabla:
Reemplace los marcadores de posición:
S3_DATA_LOCATION
: La ruta de tu bucket de S3REGION
: AWS región (por ejemplo, us-east-1)ACCOUNT_ID
: El ID de tu cuenta AWS
nota
Debe establecer estas configuraciones antes de ejecutar cualquier operación de Spark en el bloc de notas.
Operaciones admitidas
Estas operaciones utilizarán las credenciales de AWS Lake Formation para acceder a los datos de la tabla.
CREATE TABLE
ALTER TABLE
INSERT INTO
INSERT OVERWRITE
UPDATE
MERGE INTO
DELETE FROM
ANALIZAR TABLA
REPARAR TABLA
DROP TABLE
Consultas de orígenes de datos de Spark
Escrituras de orígenes de datos de Spark
nota
Las operaciones no mencionadas anteriormente aún usan permisos de IAM para acceder a los datos de las tablas.
Consideraciones
Si se crea una tabla de Hive con un trabajo que no tiene habilitado el acceso total a la tabla y no se inserta ningún registro, las lecturas o escrituras posteriores de un trabajo con acceso total a la tabla fallarán. Esto se debe a que EMR Spark sin acceso completo a la tabla agrega el
$folder$
sufijo al nombre de la carpeta de la tabla. Para resolver esto, puede optar por una de las siguientes acciones:Insertar al menos una fila en la tabla desde un trabajo que no tenga FTA habilitado.
Configure el trabajo que no tiene habilitado el FTA para que no utilice el
$folder$
sufijo en el nombre de la carpeta en S3. Esto se logra al configurarspark.hadoop.fs.s3.useDirectoryHeaderAsFolderObject=true
en Spark.Cree una carpeta S3 en la ubicación de la tabla
s3://path/to/table/table_name
mediante la consola AWS S3 o la CLI de AWS S3.
El acceso completo a la tabla (FTA) funciona exclusivamente con el sistema de archivos de EMR (EMRFS). El sistema de archivos de S3A no es compatible.
El acceso completo a tablas (FTA) es compatible con tablas de Hive e Iceberg. Aún no se ha agregado compatibilidad con tablas Hudi y Delta.
Los trabajos que hagan referencia a tablas con las reglas de control de acceso detallado de Lake Formation (FGAC) o las vistas del catálogo de datos de Glue fallarán. Para consultar una tabla con reglas del FGAC o una vista de catálogo de datos de Glue, debe usar el modo FGAC. Puede habilitar el modo FGAC siguiendo los pasos descritos en la AWS documentación: Uso de EMR Serverless con Lake AWS Formation para un control de acceso detallado.
El acceso completo a tablas no ofrece compatibilidad con Spark Streaming.
Al DataFrame escribir Spark en una tabla de Lake Formation, solo se admite el modo APPEND:
df.write.mode("append").saveAsTable(
table_name
)