Integración de Apache Iceberg mediante Spark con iDrive® e2

    Apache Iceberg es un formato de tabla de código abierto para gestionar conjuntos de datos analíticos a gran escala en lagos de datos. La integración de Apache Iceberg con IDrive® e2 mediante Apache Spark permite la gestión de grandes conjuntos de datos analíticos con potentes funciones de formato de tabla mientras se utiliza IDrive® e2 como almacenamiento de objetos en la nube escalable y seguro. Esta integración facilita un almacenamiento rentable y una analítica de alto rendimiento en su lago de datos.

    Requisitos previos:

    Antes de empezar, asegúrate de lo siguiente:

    1. Una cuenta IDrive® e2 activa. Regístrese aquí si no tiene una.
    2. Un bucket en IDrive® e2. Vea cómo crear un bucket.
    3. ID de clave de acceso válida y clave de acceso secreta. Aprenda a crear una clave de acceso.
    4. En el transcurso de las pruebas, se utilizaron los siguientes paquetes con Ubuntu 24.04.
      1. Spark versión 3.5.6
      2. iceberg-spark-runtime-3.5_2.12-1.9.2.jar
      3. hadoop-aws-3.3.4.jar
      4. aws-java-sdk-bundle-1.11.1026.jar

    Pasos para configurar Apache Iceberg con IDrive® e2

    1. Tras la instalación de la biblioteca Iceberg (Spark), actualice el directorio en $SPARK_HOME/conf/spark-defaults.conf con la siguiente configuración:

      spark.driver.extraClassPath=/home/vishal/spark-extra-jars/hadoop-aws-3.3.4.jar:/home/vishal/spark-extra-jars/aws-java-sdk-bundle-1.11.1026.jar

      spark.executor.extraClassPath=/home/vishal/spark-extra-jars/hadoop-aws-3.3.4.jar:/home/vishal/spark-extra-jars/aws-java-sdk-bundle-1.11.1026.jar

      Extensiones #Icerberg y configuración del catálogo:

      spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions

      spark.sql.catalog.s3cat=org.apache.iceberg.spark.SparkCatalog

      spark.sql.catalog.s3cat.type=hadoop

      spark.sql.catalog.s3cat.warehouse=s3a://almacén09876
      (Nota: Este es el nombre del bucket)

      #S3A filesystem configs for Idrive® e2:

      spark.hadoop.fs.s3a.endpoint=<Idrivee2-endpoint>
      (Ex: v1e8.da.idrivee2-17.com)

      spark.hadoop.fs.s3a.path.style.access=true

      spark.hadoop.fs.s3a.connection.ssl.enabled=true

      spark.hadoop.fs.s3a.signing-region=us-east-1

      spark.hadoop.fs.s3a.access.key=<Access Key>

      spark.hadoop.fs.s3a.secret.key=<Secret Key>

      #Pasos opcionales para el ajuste del rendimiento:

      spark.hadoop.fs.s3a.fast.upload=true

      spark.hadoop.fs.s3a.connection.maximum=100

      spark.hadoop.fs.s3a.threads.max=20

    2. Descargar el Hadoop AWS y AWS SDK para Spark 3.5.6 necesario

      mkdir -p ~/spark-extra-jars

      cd ~/spark-extra-jars

      # Download matching Hadoop AWS + AWS SDK for Spark 3.5.6 (Hadoop 3.3.4)

      curl -O
      https://repo1.maven.org/maven2/org/apache/hadoop/hadoop-aws/3.3.4/hadoop-aws-3.3.4.jar

      curl -O
      https://repo1.maven.org/maven2/com/amazonaws/aws-java-sdk-bundle/1.11.1026/aws-java-sdk-bundle-1.11.1026.jar

    3. Ejecute el siguiente código para crear un bucket (si no existe) e insertar datos en la tabla (Bucket) en destino

      #!/bin/bash

      spark-sql --jars \

      $SPARK_HOME/jars/iceberg-spark-runtime-3.5_2.12-1.9.2.jar,
      $SPARK_HOME/jars/hadoop-aws-3.3.4.jar,
      $SPARK_HOME/jars/aws-java-sdk-bundle-1.11.1026.jar -e "

      CREATE NAMESPACE IF NOT EXISTS s3cat.db;

      CREATE TABLE IF NOT EXISTS s3cat.db.events (
      id BIGINT,
      ts TIMESTAMP,
      datos STRING
      ) USING iceberg;

      INSERT INTO s3cat.db.events VALUES (1, current_timestamp(), 'hola'), (2, current_timestamp(), 'mundo');

      SELECT * FROM s3cat.db.events;

      " --verbose

    Nota: Cambie las claves de acceso, los puntos finales y los nombres de directorio según su configuración.

    Nota: La restauración de los datos corre a cargo de su proveedor específico de soluciones de copia de seguridad y se ve afectada por múltiples variables que son exclusivas de su entorno. Para consultas/soporte relacionados con la aplicación, se recomienda encarecidamente que solicite asesoramiento al equipo técnico de su proveedor de soluciones de copia de seguridad.