es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué es obligatorio añadir la dependencia org.apache.spark.avro para leer/escribir archivos avro en Spark2.4 si estoy utilizando com.databricks.spark.avro?

Intenté ejecutar mi código de Spark/Scala 2.3.0 en un clúster de Cloud Dataproc 1.4 donde está instalado Spark 2.4.8. Me encontré con un error relacionado con la lectura de archivos avro. Aquí está mi código:

sparkSession.read.format("com.databricks.spark.avro").load(input)

Este código falló como se esperaba. Luego agregué esta dependencia a mi archivo pom.xml:

<dependency>
    <groupid>org.apache.spark</groupid>
    <artifactid>spark-avro_2.11</artifactid>
    <version>2.4.0</version>
</dependency>

Esto hizo que mi código se ejecutara correctamente. Y esta es la parte que no entiendo, todavía estoy utilizando el módulo com.databricks.spark.avro en mi código. ¿Por qué agregar la dependencia org.apache.spark.avro resolvió mi problema, sabiendo que no la estoy usando realmente en mi código?

Esperaba tener que cambiar mi código a algo como esto:

sparkSession.read.format("avro").load(input)
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    La razón por la que agregar la dependencia org.apache.spark.avro resuelve el problema es porque esta biblioteca proporciona una versión compatible de la biblioteca Avro que es utilizada por Spark. Cuando usas el módulo com.databricks.spark.avro en tu código, este depende de la biblioteca Avro para leer y escribir archivos Avro. Sin embargo, esta biblioteca puede no ser compatible con la versión de Spark que estás utilizando. Al agregar la dependencia org.apache.spark.avro, estás asegurando que Spark utiliza una versión compatible de la biblioteca Avro para leer y escribir archivos Avro, lo cual permite que el módulo com.databricks.spark.avro funcione correctamente. Por lo tanto, en realidad estás utilizando org.apache.spark.avro de forma indirecta a través de com.databricks.spark.avro.

Comments are closed.