Trabajando con Apache Iceberg en AWS Glue - AWS Recomendaciones de

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 Gluees un servicio de integración de datos sin servidor que facilita el descubrimiento, la preparación, el traslado y la integración de datos de múltiples fuentes para el análisis, el aprendizaje automático (ML) y el desarrollo de aplicaciones. Una de las principales capacidades AWS Glue es su capacidad para realizar operaciones de extracción, transformación y carga (ETL) de forma sencilla y rentable. Esto ayuda a clasificar los datos, limpiarlos, enriquecerlos y moverlos de forma fiable entre varios almacenes de datos y flujos de datos. 

AWS Glue Los trabajos encapsulan scripts que definen la lógica de transformación mediante un tiempo de ejecución de Apache Spark o Python. AWS Glue los trabajos se pueden ejecutar tanto en modo por lotes como en modo streaming. 

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 y 4.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" }

Usando una versión personalizada de Iceberg

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, puedes usar un conector personalizado o tu propio archivo JAR.

Uso de un conector personalizado

AWS Glue admite conectores, que son paquetes de códigos opcionales que ayudan a acceder a los almacenes de datos AWS Glue Studio. Puede suscribirse a un conector o crear uno personalizado. AWS Marketplace

nota

AWS Marketplace ofrece el conector Apache Iceberg para AWS Glue. Sin embargo, le recomendamos que utilice un conector personalizado en su lugar para conservar el control sobre las versiones Iceberg.

Por ejemplo, para crear un conector de cliente para la versión 0.13.1 de Iceberg, siga estos pasos:

  1. Suba los archivos iceberg-spark-runtime-3.1_2.12-0.13.1.jar bundle-2.17.161.jar y url-connection-client-2.17.161.jar a un bucket de Amazon S3. Puede descargar estos archivos desde sus respectivos repositorios de Apache Maven.

  2. En la AWS Glue Studio consola, crea un conector Spark personalizado:

    1. En el panel de navegación, selecciona Conexiones de datos. (Si utiliza la navegación anterior, elija Conectores y cree un conector personalizado).

    2. En el cuadro Conectores, selecciona Crear conector personalizado.

    3. En la página Crear un conector personalizado:

      • Especifique la ruta a los archivos JAR en Amazon S3.

      • Introduzca un nombre para el conector.

      • Elija Spark como tipo de conector.

      • En Nombre de clase, especifique el nombre completo de la clase de la fuente de datos (o su alias) que utilizará al cargar la fuente de datos de Spark con el format operador.

      • (Opcional) Proporcione una descripción del conector.

3. Elija Crear conector.

Al trabajar con los conectores integrados AWS Glue, debe crear una conexión para el conector. Una conexión contiene las propiedades necesarias para conectarse a un banco de datos concreto. Utilice la conexión con los orígenes de datos y los destinos de datos en el trabajo de ETL. Los conectores y las conexiones funcionan en conjunto para facilitar el acceso a los almacenes de datos.

Para crear una conexión mediante el conector Iceberg personalizado que ha creado:

  1. En la AWS Glue Studio consola, selecciona tu conector Iceberg personalizado.

  2. Siga las instrucciones para proporcionar los detalles, como la VPC y otras configuraciones de red requeridas por el trabajo, y luego elija Crear conexión.

Ahora puede usar la conexión en su trabajo de AWS Glue ETL. En función de cómo cree el trabajo, hay diferentes maneras de conectar la conexión al trabajo:

  • Si crea un trabajo visual utilizando AWS Glue Studio, puede seleccionar la conexión en la lista de conexiones de la pestaña Conector de propiedades de la fuente de datos.

  • Si desarrolla el trabajo en un cuaderno, utilice la %connections magia para establecer el nombre de la conexión:

    %glue_version 3.0 %connections <name-of-the iceberg-connection> %%configure { "--conf" : "job-specific Spark configurations, to be discussed later", "--datalake-formats" : "iceberg" }
  • Si crea el trabajo mediante el editor de scripts, especifique la conexión en la pestaña Detalles del trabajo, en Propiedades avanzadas, Conexiones de red adicionales

Para obtener más información sobre los procedimientos de esta sección, consulte Uso de conectores y conexiones AWS Glue Studio en la AWS Glue documentación.

Traiga sus propios archivos JAR

También puedes trabajar con Iceberg sin tener que usar un conector. AWS Glue Este enfoque es útil cuando se quiere conservar el control sobre la versión de Iceberg y actualizarla rápidamente. Para usar esta opción, cargue los archivos JAR de Iceberg necesarios en el depósito de S3 que prefiera y haga referencia a los archivos de su AWS Glue trabajo. Por ejemplo, si trabaja con Iceberg 1.0.0, los archivos JAR necesarios soniceberg-spark-runtime-3.0_2.12-1.0.0.jar, yurl-connection-client-2.15.40.jar. bundle-2.15.40.jar También puede priorizar los archivos JAR adicionales de la ruta de clase configurando el --user-jars-first parámetro en true para el trabajo.

Crea configuraciones 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 3.0 %connections <name-of-the iceberg-connection> %%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 de su catálogo y recuerde cambiar las referencias en todas las configuraciones asociadas a este catálogo. En tu código, debes consultar las tablas de Iceberg con 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>.

  • <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, <catalog_name>.catalog-impl configúrelo enorg.apache.iceberg.aws.glue.GlueCatalog. 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 Prácticas recomendadas generales sección de mejores prácticas generales más adelante en esta guía.

  • Úselo org.apache.iceberg.aws.s3.S3FileIO como para aprovechar la <catalog_name>.io-impl carga multiparte de Amazon S3 para lograr un alto paralelismo.

Por ejemplo, si tiene un catálogo llamadoglue_iceberg, puede configurar su trabajo utilizando 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.catalog-impl=org.apache.iceberg.aws.glue.GlueCatalog ", "‐‐conf" : " spark.sql.catalog.glue_iceberg.io-impl=org.apache.iceberg.aws.s3.S3FileIO }

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.catalog-impl", "org.apache.iceberg.aws.glue.GlueCatalog") \ .config("spark.sql.catalog.glue_iceberg.io-impl", "org.apache.iceberg.aws.s3.S3FileIO") \ .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 versión más reciente de AWS Glue y actualícela siempre que sea posible: las nuevas versiones AWS Glue ofrecen mejoras de rendimiento, tiempos de inicio reducidos y 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 conectores personalizados o añada dependencias de biblioteca: la integración AWS Glue nativa de Iceberg es la mejor forma de empezar a utilizar Iceberg. Sin embargo, para las cargas de trabajo de producción, le recomendamos que utilice contenedores personalizados o añada dependencias de biblioteca (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