Puede que tengas procesos ETL escritos en Java, librerías personalizadas que no quieres migrar o simplemente te preguntes si Databricks es compatible con tu stack actual. Lo cierto es que sí puedes ejecutar código Java en Databricks, pero no de cualquier forma… Y si no lo haces bien, puedes perder tiempo, recursos o que tu proceso falle en producción sin avisar. En este artículo te explico paso a paso cómo hacerlo bien desde el principio.

Si estás trabajando con código legacy, librerías Java o integraciones específicas, este artículo te ahorrará muchos dolores de cabeza.
Contenidos
¿Se puede ejecutar código Java en Databricks?
Databricks soporta la ejecución de código Java, ya que Internamente, Spark está escrito en Scala/Java, y Databricks ejecuta sobre Apache Spark.
Puedes subir tus .jar compilados y ejecutarlos en clústeres de Databricks y también puedes usar librerías Java en notebooks o trabajos Spark mediante spark-submit
.
Cómo ejecutar un proceso Java en Databricks
Opción 1 (Recomendada): Job con tipo “JAR” desde la interfaz de Jobs
Cuando creas un nuevo Job en la UI, puedes configurarlo como tipo JAR. También, tendrás que especificar la clase principal y los argumentos y la ruta del archivo JAR: algo como dbfs:/FileStore/libs/tu-jar.jar
.
¿Quieres Convertirte en experto en Ingeniería de Datos?
Databricks lanza el clúster, monta el JAR y ejecuta la clase principal que indiques.
Opción 2: Subir un .jar y ejecutarlo con spark-submit
Para hacerlo, puedes abrir un notebook y ejecutar un spark-submit:
%sh
spark-submit --class com.test.MainClass \
--master local[*] \
dbfs:/FileStore/libs/tu-proceso.jar
Aquí puedes sustituir la opción --master local[*]
por el modo que quieras.
Limitaciones
- No puedes ejecutar Java puro como lo harías en un contenedor independiente. Siempre lo debemos usar dentro del contexto de Spark, o usando el entorno del clúster Databricks.
- No hay notebooks en Java. Solo puedes usar notebooks con PySpark, Scala, SQL o R. Aun así, puedes invocar procesos Java desde Scala o desde el sistema (
%sh
). - Empaqueta bien tus dependencias. Lo mejor es generar un
fat jar
(con todas las dependencias incluidas), porque Databricks no resuelve dependencias de Maven automáticamente en un.jar
job.
Casos de uso
Procesos ETL en Spark escritos en Java. Esto solo debería ocurrir con procesos legacy en un transitorio de migración o que no se quieran reescribir en Scala o Python.
También, si quieres integrar librerías Java personalizadas en tus pipelines de datos.
Siguientes Pasos, Formación y Cursos de Databricks
Aquí tienes mi propio curso para que aprendas de forma eficiente Databricks, para cualquier nivel:
Curso de Introducción a Databricks
Este curso te preparará para comprender y sacar todo el partido posible al ecosistema de Databricks.
Explorarás conceptos fundamentales como la arquitectura de Databricks, los tipos de clústeres, Delta Lake, Unity Catalog y la integración con Azure Data Lake Storage.
En las secciones prácticas, pondrás manos a la obra utilizando la interfaz gráfica, configurando clústeres, trabajando con notebooks, gestionando costes y securizando accesos
Preguntas Frecuentes
¿Puedo compilar código Java directamente en Databricks?
No. Databricks no está pensado como un entorno de desarrollo. Necesitas compilar tu código Java en local (o en un pipeline CI/CD) y subir el JAR ya empaquetado al entorno.
Databricks tampoco ofrece herramientas de debugging para Java. Para depurar, deberías hacerlo en local antes de empaquetar tu JAR, o usar logs y excepciones capturadas dentro del clúster para analizar los errores.
¿Qué alternativas tengo si quiero programar en un lenguaje JVM en Databricks sin usar Java?
Puedes usar Scala, que está completamente soportado en notebooks y es el lenguaje en el que Spark fue originalmente escrito. Es más idiomático para Spark que Java, y ofrece una mejor integración con las APIs de Databricks.
¿Dónde puedo almacenar mis JARs para usarlos en Databricks?
La opción más común es subirlos a DBFS (Databricks File System). También puedes usar almacenamiento externo como S3, pero necesitarás configurar el acceso adecuado desde el clúster.