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.
Trabajando con Apache Iceberg en AWS Glue
AWS Glue
AWS Glue Los trabajos encapsulan scripts que definen la lógica de transformación mediante un tiempo de ejecución de Apache Spark
Al crear trabajos de Iceberg AWS Glue, según la versión de AWS Glue, puede utilizar la integración nativa de Iceberg o una versión personalizada de Iceberg para adjuntar las dependencias de Iceberg al trabajo.
Uso de la integración nativa de Iceberg
AWS Glue Las versiones 3.0, 4.0 y 5.0 admiten de forma nativa formatos de lagos de datos transaccionales como Apache Iceberg, Apache Hudi y Linux Foundation Delta Lake para Spark. AWS Glue Esta función de integración simplifica los pasos de configuración necesarios para empezar a utilizar estos marcos en. AWS Glue
Para habilitar el soporte de Iceberg para su AWS Glue trabajo, configure el trabajo: elija la pestaña Detalles del trabajo para su AWS Glue trabajo, desplácese hasta Parámetros del trabajo en Propiedades avanzadas y establezca la clave --datalake-formats
y su valor en. iceberg
Si va a crear un trabajo con una libreta, puede configurar el parámetro en la primera celda de la libreta utilizando la %%configure
magia de la siguiente manera:
%%configure { "--conf" : <job-specific Spark configuration discussed later>, "--datalake-formats" : "iceberg" }
La iceberg
configuración de --datalake-formats
in AWS Glue
corresponde a versiones específicas de Iceberg en función de su AWS Glue versión:
AWS Glue versión | Versión predeterminada de Iceberg |
---|---|
5.0 |
1.7.1 |
4.0 |
1.0.0 |
3.0 |
0.13.1 |
Uso de una versión de Iceberg personalizada
En algunas situaciones, es posible que desee conservar el control sobre la versión Iceberg para el trabajo y actualizarla a su propio ritmo. Por ejemplo, la actualización a una versión posterior puede desbloquear el acceso a nuevas funciones y mejoras de rendimiento. Para usar una versión específica de Iceberg AWS Glue, puede proporcionar sus propios archivos JAR.
Antes de implementar una versión de Iceberg personalizada, compruebe la compatibilidad con su AWS Glue entorno consultando la sección de AWS Glue versiones de la AWS Glue documentación. Por ejemplo, la AWS Glue versión 5.0 requiere compatibilidad con Spark 3.5.4.
Por ejemplo, para ejecutar AWS Glue trabajos que usen la versión 1.9.1 de Iceberg, sigue estos pasos:
-
Adquiera y cargue los archivos JAR necesarios en Amazon S3:
-
Descargue iceberg-spark-runtime-3.5_2.12-1.9.1.jar y -1.9.1.jar
del repositorio Maven de Apache. iceberg-aws-bundle -
Cargue estos archivos en la ubicación del bucket de S3 que haya designado (por ejemplo,).
s3://your-bucket-name/jars/
-
-
Configure los parámetros de trabajo para su AWS Glue trabajo de la siguiente manera:
-
Especifique la ruta S3 completa a ambos archivos JAR en el
--extra-jars
parámetro, separándolos con una coma (por ejemplo,s3://your-bucket-name/jars/iceberg-spark-runtime-3.5_2.12-1.9.1.jar,s3://your-bucket-name/jars/iceberg-aws-bundle-1.9.1.jar
). -
No incluya
iceberg
como valor para el parámetro--datalake-formats
. -
Si usa AWS Glue 5.0, debe establecer el
--user-jars-first
parámetro en.true
-
Configuraciones de Spark para Iceberg en AWS Glue
En esta sección se analizan las configuraciones de Spark necesarias para crear un trabajo de AWS Glue ETL para un conjunto de datos de Iceberg. Puedes establecer estas configuraciones usando la clave de --conf
Spark con una lista separada por comas de todas las claves y valores de configuración de Spark. Puedes usar la %%configure
magia en un cuaderno o en la sección de parámetros de Job de la AWS Glue Studio consola.
%glue_version 5.0 %%configure { "--conf" : "spark.sql.extensions=org.apache.iceberg.spark.extensions...", "--datalake-formats" : "iceberg" }
Configura la sesión de Spark con las siguientes propiedades:
-
<catalog_name>
es el nombre del catálogo de sesiones de Iceberg Spark. Sustitúyalo por el nombre que prefieras y recuerda cambiar las referencias en todas las configuraciones asociadas a este catálogo. En tu código, puedes hacer referencia a tus tablas de Iceberg utilizando el nombre completo de la tabla, incluido el nombre del catálogo de sesiones de Spark, de la siguiente manera:<catalog_name>.<database_name>.<table_name>
Como alternativa, puedes cambiar el catálogo predeterminado por el catálogo de Iceberg que has definido configurando el nombre
spark.sql.defaultCatalog
de tu catálogo. Puede utilizar este segundo enfoque para hacer referencia a las tablas sin el prefijo del catálogo, lo que puede simplificar las consultas. -
<catalog_name>.<warehouse>
apunta a la ruta de Amazon S3 en la que desea almacenar sus datos y metadatos. -
Para convertir el catálogo en un AWS Glue Data Catalog,
spark.sql.catalog.<catalog_name>.type
configúrelo englue
. Esta clave es necesaria para apuntar a una clase de implementación para cualquier implementación de catálogo personalizada. Para ver los catálogos compatibles con Iceberg, consulte la sección de mejores prácticas generales más adelante en esta guía.
Por ejemplo, si tiene un catálogo llamadoglue_iceberg
, puede configurar su trabajo mediante varias --conf
claves de la siguiente manera:
%%configure { "--datalake-formats" : "iceberg", "--conf" : "spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions --conf spark.sql.catalog.glue_iceberg=org.apache.iceberg.spark.SparkCatalog --conf spark.sql.catalog.glue_iceberg.warehouse=s3://<your-warehouse-dir>/ --conf spark.sql.catalog.glue_iceberg.type=glue" }
Como alternativa, puedes usar el código para añadir las configuraciones anteriores a tu script de Spark de la siguiente manera:
spark = SparkSession.builder\ .config("spark.sql.extensions","org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions")\ .config("spark.sql.catalog.glue_iceberg", "org.apache.iceberg.spark.SparkCatalog")\ .config("spark.sql.catalog.glue_iceberg.warehouse","s3://<your-warehouse-dir>/")\ .config("spark.sql.catalog.glue_iceberg.type", "glue") \ .getOrCreate()
Mejores prácticas para los AWS Glue trabajos
Esta sección proporciona pautas generales para ajustar los trabajos de Spark AWS Glue a fin de optimizar la lectura y la escritura de datos en las tablas de Iceberg. Para conocer las mejores prácticas específicas de Iceberg, consulta la sección de mejores prácticas más adelante en esta guía.
-
Utilice la última versión AWS Glue y actualícela siempre que sea posible: las nuevas versiones AWS Glue ofrecen mejoras en el rendimiento, reducen los tiempos de inicio y ofrecen nuevas funciones. También son compatibles con las versiones más recientes de Spark que podrían ser necesarias para las versiones más recientes de Iceberg. Para ver una lista de AWS Glue las versiones disponibles y las versiones de Spark compatibles con ellas, consulta la AWS Glue documentación.
-
Optimiza la memoria de AWS Glue trabajo: sigue las recomendaciones de la entrada del AWS blog Optimiza la gestión de la memoria en AWS Glue
. -
Use AWS Glue Auto Scaling: cuando habilita Auto Scaling, ajusta AWS Glue automáticamente la cantidad de AWS Glue trabajadores de forma dinámica en función de su carga de trabajo. Esto ayuda a reducir el costo de su AWS Glue trabajo durante los picos de carga, ya AWS Glue que reduce el número de trabajadores cuando la carga de trabajo es pequeña y los trabajadores están inactivos. Para usar AWS Glue Auto Scaling, debe especificar un número máximo de trabajadores al que se puede escalar su AWS Glue trabajo. Para obtener más información, consulte Uso del escalado automáticoAWS Glue en la AWS Glue documentación.
-
Utilice la versión de Iceberg que desee: la integración AWS Glue nativa de Iceberg es lo mejor para empezar a utilizar Iceberg. Sin embargo, para las cargas de trabajo de producción, le recomendamos que añada dependencias de biblioteca (tal y como se ha explicado anteriormente en esta guía) para tener un control total sobre la versión de Iceberg. Este enfoque le ayuda a beneficiarse de las últimas funciones de Iceberg y de las mejoras de rendimiento en sus trabajos. AWS Glue
-
Habilita la interfaz de usuario de Spark para monitorizar y depurar. También puedes usar la interfaz de usuario de Spark AWS Glue para inspeccionar tu trabajo de Iceberg visualizando las diferentes etapas de un trabajo de Spark en un gráfico acíclico dirigido (DAG) y supervisando los trabajos en detalle. La interfaz de usuario de Spark proporciona una forma eficaz de solucionar problemas y optimizar los trabajos de Iceberg. Por ejemplo, puedes identificar las etapas más complicadas en las que se produce mucha confusión o se pierde mucho espacio en el disco para identificar las oportunidades de ajuste. Para obtener más información, consulte Supervisión de trabajos mediante la interfaz de usuario web de Apache Spark en la documentación. AWS Glue