Integración de Spark con Kudu para manipulación de datos

La combinación de Apache Spark y Kudu ofrece soporte para múltiples funcionalidades:

  • Operaciones DDL (creación y eliminación de tablas)
  • RDD nativo de Kudu
  • Fuante de datos nativa para integración con DataFrames
  • Lectura directa desde Kudu
  • Ejecución de inserciones, actualizaciones, upserts y eliminaciones
  • Optimización mediante predicate pushdown
  • Mapeo de esqumeas entre Kudu y Spark SQL

Un componente esencial es el KuduContext, un objeto serializable que se puede transmitir dentro de aplicaciones Spark. Esta clase permite la interacción con el cliente Java de Kudu en los ejecutores de Spark.

El KuduContext proporciona métodos para realizar operaciones DDL, interactuar con RDD nativos de Kudu, aplicar modificaciones de datos y convertir tipos de datos entre Kudu y Spark.

Ejemplo de inicialización:

// Configuración de contextos Spark y SQL
val sparkCtx = new SparkContext(configuracionSpark)
val sqlCtx = new SQLContext(sparkCtx)

// Direcciones de los másters de Kudu con puertos
val hostKudu1 = "servidor1.ejemplo.com:7051"
val hostKudu2 = "servidor2.ejemplo.com:7051"
val hostKudu3 = "servidor3.ejemplo.com:7051"
val listaMaestros = Seq(hostKudu1, hostKudu2, hostKudu3).mkString(",")

// Instanciación del KuduContext
val kuduCtx = new KuduContext(listaMaestros)

Configuración de depandencias con Maven

<repositories>
    <repository>
        <id>repositorio-cloudera</id>
        <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
    </repository>
</repositories>

<dependencies>
    <!-- Cliente Kudu -->
    <dependency>
        <groupId>org.apache.kudu</groupId>
        <artifactId>kudu-client</artifactId>
        <version>1.7.0-cdh5.16.2</version>
        <scope>test</scope>
    </dependency>

    <!-- Herramientas del cliente Kudu -->
    <dependency>
        <groupId>org.apache.kudu</groupId>
        <artifactId>kudu-client-tools</artifactId>
        <version>1.7.0-cdh5.16.2</version>
    </dependency>

    <!-- Conector Spark-Kudu -->
    <dependency>
        <groupId>org.apache.kudu</groupId>
        <artifactId>kudu-spark2_2.11</artifactId>
        <version>1.7.0-cdh5.16.2</version>
    </dependency>

    <!-- Spark SQL -->
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-sql_2.11</artifactId>
        <version>2.4.0</version>
    </dependency>
</dependencies>

Las operaciones detalladas se ilustran en ejemplos subsecuentes.

Etiquetas: Spark Kudu scala maven DataFrames

Publicado el 6-20 21:11