Limitaciones conocidas de los cuadernos de Databricks
En este artículo se tratan las limitaciones conocidas de los cuadernos de Databricks. Para obtener más límites de recursos, consulte Límites de recursos.
- Las celdas individuales del cuaderno tienen un límite de entrada de 6 MB.
- El tamaño máximo del cuaderno para las instantáneas de revisión guardado automático, importación, exportación y clonación es de 10 MB.
- Puede guardar manualmente cuadernos de hasta 32 MB.
- Los resultados de la tabla se limitan a 10 000 filas o 2 MB, lo que sea menor.
- Los clústeres de trabajo tienen un tamaño máximo de salida del cuaderno de 30 MB.
- Los resultados de comandos no tabulares tienen un límite de 20 MB.
- De forma predeterminada, los resultados de texto devuelven un máximo de 50 000 caracteres. Con Databricks Runtime 12.2 LTS y versiones posteriores, es posible aumentar este límite estableciendo la propiedad de configuración de Spark
spark.databricks.driver.maxReplOutputLength
.
Limitaciones del depurador de cuadernos:
- El depurador solo funciona con Python. No admite Scala ni R.
- El depurador no funciona en clústeres de modo de acceso Compartido.
- El depurador no admite depurar paso a paso por instrucciones en módulos o archivos externos.
- Cuando una sesión de depuración está activa, no se pueden ejecutar otros comandos en el cuaderno.
Limitaciones de cuadernos de almacenamiento de SQL:
- Cuando se asocia a un almacenamiento SQL, los contextos de ejecución tienen un tiempo de espera de inactividad de 8 horas.
Limitaciones de ipywidgets:
- Un cuaderno que use ipywidgets se debe conectar a un clúster en ejecución.
- Los estados del widget no se conservan entre sesiones del cuaderno. Debe volver a ejecutar las celdas de widget para representarlas cada vez que conecte el cuaderno a un clúster.
- Los ipywidgets Contraseña y Controlador no son compatibles.
- Los widgets HTMLMath y Label con expresiones LaTeX no se representan correctamente. (Por ejemplo,
widgets.Label(value=r'$$\frac{x+1}{x-1}$$')
no se representa correctamente). - Es posible que los widgets no se represente correctamente si el cuaderno está en modo oscuro, especialmente los widgets con colores.
- Las salidas del widget no se pueden usar en las vistas del panel del cuaderno.
- El tamaño máximo de la carga del mensaje de un ipywidget es de 5 MB. Es posible que los widgets que usan imágenes o datos de texto de gran tamaño no se representen correctamente.
Limitaciones de los widgets de Databricks:
Se pueden crear un máximo de 512 widgets en un cuaderno.
Un nombre de widget está limitado a 1024 caracteres.
Una etiqueta de widget está limitada a 2048 caracteres.
Un máximo de 2048 caracteres puede ser entrada en un widget de texto.
Puede haber un máximo de 1024 opciones para un widget de selección múltiple, cuadro combinado o widget desplegable.
Hay un problema conocido por el que un estado del widget puede no borrarse correctamente después de presionar Ejecutar todo, incluso después de borrar o quitar el widget en el código. Si esto sucede, verá una discrepancia entre el objeto visual del widget y los estados impresos. Volver a ejecutar las celdas individualmente puede esquivar este problema. Para evitar este problema por completo, Databricks recomienda usar ipywidgets.
No debe tener acceso al estado del widget directamente en contextos asincrónicos como subprocesos, subprocesos o Structured Streaming (foreachBatch), ya que el estado del widget puede cambiar mientras se ejecuta el código asincrónico. Si necesita acceder al estado del widget en un contexto asincrónico, páselo como argumento. Por ejemplo, si tiene el código siguiente que usa subprocesos:
import threading def thread_func(): # Unsafe access in a thread value = dbutils.widgets.get('my_widget') print(value) thread = threading.Thread(target=thread_func) thread.start() thread.join()
Databricks recomienda usar un argumento en su lugar:
# Access widget values outside the asynchronous context and pass them to the function value = dbutils.widgets.get('my_widget') def thread_func(val): # Use the passed value safely inside the thread print(val) thread = threading.Thread(target=thread_func, args=(value,)) thread.start() thread.join()
Por lo general, los widgets no pueden pasar argumentos entre distintos idiomas dentro de un cuaderno. Puede crear un widget
arg1
en una celda Python y usarlo en una celda SQL o Scala si ejecuta una celda a la vez. Sin embargo, esto no funciona si usa Ejecutar todo o ejecuta el cuaderno como un trabajo. Algunas soluciones alternativas son:- En el caso de los cuadernos que no mezclan idiomas, puede crear un cuaderno para cada idioma y pasar los argumentos al ejecutar el cuaderno.
- Puede acceder al widget mediante una llamada
spark.sql()
. Por ejemplo, en Python:spark.sql("select getArgument('arg1')").take(1)[0][0]
.
Limitaciones de bamboolib:
- El uso de bamboolib para la limpieza y transformación de datos está limitado a aproximadamente 10 millones de filas. Este límite se basa en pandas y en los recursos de proceso del clúster.
- El uso de bamboolib para visualizaciones de datos está limitado a aproximadamente 10 mil filas. Este límite se basa en trazado.