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.

No se puede construir la aplicación Spark con múltiples clases principales para el trabajo de Databricks.

Tengo una aplicación de Spark que contiene múltiples trabajos de Spark que se ejecutarán en Azure Databricks. Quiero construir y empaquetar la aplicación en un archivo JAR completo. La aplicación puede compilar correctamente. Mientras intento empaquetar (comando: sbt package) la aplicación, me da un error “[advertencia] se detectaron múltiples clases principales: ejecutar ‘mostrar discoveredMainClasses’ para ver la lista”.

¿Cómo puedo construir el archivo JAR de la aplicación (sin especificar ninguna clase principal) para poder subirlo al trabajo de Databricks y especificar la ruta de la clase principal allí?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para construir el archivo jar de la aplicación sin especificar ninguna clase principal, puedes modificar tu archivo build.sbt con la siguiente configuración:

    lazy val root = (project in file(".")).
    settings(
    name := "my-spark-app",
    version := "0.1",
    scalaVersion := "2.11.8",
    // Excluye la clase principal del jar
    mainClass in (Compile, packageBin) := None,
    // Agrega el plugin assembly para empaquetar el jar completo
    addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.9")
    )
    

    Luego, ejecuta el comando sbt clean assembly para construir un jar completo. El archivo jar se creará en target/scala-2.11/. Puedes subir este jar a un trabajo de Databricks y especificar la ruta de la clase principal en la configuración del trabajo. Para hacer esto, ve a la página de configuración del trabajo en el espacio de trabajo de Databricks, haz clic en ‘Opciones Avanzadas’ y especifica la ruta de la clase principal en la sección ‘Dependencias del Spark.jar’. Asegúrate de seleccionar la opción ‘Jar completo’ en la sección ‘Tipo de jar Spark’.

Comments are closed.