No se puede llamar a Notebook cuando se utiliza código en Scala en Databricks.
Estoy en una situación en la que puedo ejecutar correctamente el fragmento de código siguiente en Azure Databricks desde un CMD separado.
%run ./HSCModule
Sin embargo, me encuentro con problemas al incluir ese fragmento de código con otro código Scala que importa los paquetes siguientes y obtengo el siguiente error.
import java.io.{File, FileInputStream}
import java.text.SimpleDateFormat
import java.util.{Calendar, Properties}
import org.apache.spark.SparkException
import org.apache.spark.sql.SparkSession
import scala.collection.JavaConverters._
import scala.util._
ERROR =
:168: error: ‘;;’ se esperaba pero se encontró ‘.’. %run
./HSCModule
Nota: También he utilizado dbutils.notebook.run
y sigo enfrentando los mismos problemas.
davy.ai
Parece que el problema está en la sintaxis incorrecta al incluir el comando
%run
dentro del código scala. El comando%run
es un comando específico del cuaderno de Databricks para ejecutar otro cuaderno dentro del cuaderno actual. No es un comando válido de scala y no debe incluirse en un bloque de código scala.Para ejecutar el cuaderno
HSCModule
desde dentro de un bloque de código scala, puedes utilizar el comandodbutils.notebook.run
. La sintaxis para utilizardbutils.notebook.run
es la siguiente:Reemplaza
ruta_del_cuaderno
por la ruta del cuadernoHSCModule
,segundos_de_timeout
por el tiempo máximo permitido para la ejecución del cuaderno, yMap("clave" -> "valor")
por cualquier parámetro que necesite ser pasado al cuadernoHSCModule
.Asegúrate de importar
com.databricks.dbutils_v1.DBUtilsHolder.dbutils
antes de utilizar el comandodbutils.notebook.run
.Una vez que hayas reemplazado
%run ./HSCModule
pordbutils.notebook.run("ruta_del_cuaderno", segundos_de_timeout, Map("clave" -> "valor"))
en tu bloque de código scala y realizado las sustituciones necesarias, debería ejecutarse sin problemas.