Limitaciones de proceso sin servidor

En este artículo se explican las limitaciones actuales de la computación sin servidor para notebooks y tareas. Comienza con una visión general de las consideraciones más importantes y, a continuación, proporciona una lista de referencia completa de las limitaciones.

Compatibilidad con lenguajes y API

  • No se admite R.
  • Solo se admiten las API de Spark Connect. No se admiten las API de RDD de Spark.
  • Spark Connect, que usa el proceso sin servidor, aplaza el análisis y la resolución de nombres al tiempo de ejecución, lo que puede cambiar el comportamiento del código. Consulte Comparación de Spark Connect con Spark clásico.
  • El modo ANSI está activado por defecto. Las conversiones de tipo no válidas, el desbordamiento aritmético y la entrada mal formada generan errores en tiempo de ejecución en lugar de devolver NULL silenciosamente o un resultado incorrecto. Para obtener información sobre cómo manejar operaciones que cambian el comportamiento y los límites para desactivar esta opción, consulta la sección sobre las diferencias de comportamiento de SQL de la guía de migración.
  • La zona horaria predeterminada de la sesión es Etc/UTC (Tiempo Universal Coordinado). Para usar una zona horaria diferente, configura spark.sql.session.timeZone. Consulte Configuración de las propiedades de Spark para cuadernos y trabajos sin servidor.
  • Al crear un dataframe a partir de datos locales mediante spark.createDataFrame, los tamaños de fila no pueden superar los 128 MB.

Acceso a datos y almacenamiento

  • Debe usar Unity Catalog para conectarse a orígenes de datos externos. Use ubicaciones externas para acceder al almacenamiento en la nube.
  • El acceso a DBFS está limitado. Utilice volúmenes del Catálogo de Unity o archivos del espacio de trabajo en su lugar.
  • El directorio de trabajo para cuadernos y tareas de trabajo no está garantizado, por lo que las rutas relativas de archivos y las importaciones relativas de Python pueden fallar. Usa rutas absolutas para referenciar archivos e importa código Python compartido como archivos de espacio de trabajo en lugar de módulos relativos. Consulta Trabajar con los módulos de Python y R.
  • No se admiten las coordenadas de Maven.
  • No se admiten vistas temporales globales. Cuando se requieren pasos de datos entre sesiones, Databricks recomienda usar vistas temporales de sesión o crear tablas.

Funciones definidas por el usuario (UDF)

  • Las funciones definidas por el usuario (UDF) no pueden acceder a Internet. Debido a esto, no se admite el comando CREATE FUNCTION (externo). Databricks recomienda usar CREATE FUNCTION (SQL y Python) para crear UDF.
  • El código personalizado definido por el usuario, como UDF, mapy mapPartitions, no puede superar los 1 GB de uso de memoria.
  • Las UDF de Scala no se pueden usar dentro de funciones de orden superior.

Interfaz de usuario y registro

  • La interfaz de usuario de Spark no está disponible. En su lugar, use el perfil de consulta para ver información sobre las consultas de Spark. Consulte Perfil de consulta.
  • Los registros de Spark no están disponibles. Los usuarios solo tienen acceso a los registros de aplicaciones del lado cliente.

Acceso a redes y áreas de trabajo

  • Solo se permite el acceso entre áreas de trabajo si las áreas de trabajo están en la misma región y el área de trabajo de destino no tiene configurada una ACL de IP o PrivateLink de front-end.
  • No se admite Databricks Container Services.
  • El computo serverless no puede conectarse a recursos que solo son accesibles por IPv6. Los recursos deben estar disponibles a través de IPv4.

Limitaciones de streaming

El proceso sin servidor admite los siguientes desencadenadores de Structured Streaming:

  • Trigger.AvailableNow(). Databricks recomienda este modo de desencadenador para el proceso sin servidor.
  • Trigger.Once(). Este modo en desuso se admite, pero no se recomienda.

Los siguientes desencadenadores no se admiten en el proceso sin servidor:

  • Trigger.Continuous(interval).
  • Trigger.ProcessingTime(interval).
    • De forma predeterminada, si no especifica un modo de desencadenador, Apache Spark establece el desencadenador en Trigger.ProcessingTime("0 seconds"). Debe establecer un desencadenador compatible en el proceso sin servidor.

Si intenta usar un desencadenador no admitido, la consulta genera un error INFINITE_STREAMING_TRIGGER_NOT_SUPPORTED.

En el caso de las cargas de trabajo de streaming continuas, use desencadenado frente al modo de canalización continua en modo continuo sin servidor o use Trigger.AvailableNow() en Ejecutar trabajos continuamente.

Para obtener una guía de decisión que asigne casos de uso de streaming al producto sin servidor adecuado, consulte Streaming en proceso sin servidor.

También se aplican todas las limitaciones de streaming en modo de acceso estándar. Consulte Limitaciones de streaming.

Limitaciones de los cuadernos

  • Scala y R no son compatibles con cuadernos.
  • Las bibliotecas JAR no se admiten en notebooks. Para obtener soluciones alternativas, consulte Procedimientos recomendados para el proceso sin servidor. Se admiten tareas JAR en trabajos. Consulte Tarea JAR para trabajos.
  • Las bibliotecas con ámbito de cuaderno no se almacenan en caché en las sesiones de desarrollo.
  • No se admite el uso compartido de tablas y vistas TEMP cuando se comparte un cuaderno entre usuarios.
  • no se admitenAutocompletar y explorador de variables para tramas de datos en cuadernos.
  • De forma predeterminada, los nuevos cuadernos se guardan en .ipynb formato. Si el cuaderno se guarda en formato de origen, es posible que los metadatos sin servidor no se capturen correctamente y es posible que algunas características no funcionen según lo previsto.
  • No se admiten etiquetas de cuaderno. Use directivas de uso sin servidor para etiquetar el uso sin servidor.

Limitaciones del trabajo

  • Los registros de tareas no están aislados por cada ejecución de una tarea. Los registros contendrán la salida de varias tareas.
  • Las bibliotecas de tareas no se admiten para las tareas de cuaderno. En su lugar, use bibliotecas con ámbito de cuaderno. Consulte Bibliotecas de Python cuyo ámbito es Notebook.
  • De forma predeterminada, los trabajos sin servidor no tienen tiempo de espera de ejecución de consultas. Puede establecer un tiempo de espera de ejecución para las consultas de trabajo mediante la spark.databricks.execution.timeout propiedad . Para más información, consulte Configuración de las propiedades de Spark para cuadernos y trabajos sin servidor.
  • El proceso sin servidor tiene un tiempo de ejecución máximo de 7 días. Las ejecuciones que superan 7 días son finalizadas por la plataforma y no se reintentan. Para ejecutar cargas de trabajo de más de 7 días, dividalas en ejecuciones más pequeñas o use el proceso clásico.

Limitaciones específicas de cómputo

No se admiten las siguientes características específicas de la computación.

Limitaciones de almacenamiento en caché

  • Los metadatos se almacenan en caché en sesiones de proceso sin servidor. Debido a esto, es posible que el contexto de sesión no se restablezca completamente al cambiar de catálogo. Para borrar el contexto de sesión, restablezca el recurso de proceso sin servidor o inicie una nueva sesión.
  • Las APIs de dataframe y caché de SQL no se admiten en la computación sin servidor. El uso de cualquiera de estas API o comandos SQL produce una excepción.
  • La caché del modelo Spark ML está limitada a 1 GB (1073741824 bytes) por sesión, y un solo modelo está limitado a 100 MB. Ambos límites son menores en computación serverless que en computación clásica, y ninguno puede cambiarse. Superar el límite de sesiones provoca ML_CACHE_SIZE_OVERFLOW_EXCEPTION. Superar el límite por modelo provoca MODEL_SIZE_OVERFLOW_EXCEPTION. Para liberar espacio en la caché, elimina las referencias en Python a modelos que ya no usas. Los modelos que quedan sin usar durante 15 minutos pasan al disco local y aún cuentan para el límite de sesión.

Limitaciones de Hive

  • No se admiten las tablas de Hive SerDe. Además, no se admite el comando LOAD DATA correspondiente que carga datos en una tabla serDe de Hive. El uso del comando producirá una excepción.

    La compatibilidad con orígenes de datos se limita a AVRO, BINARYFILE, CSV, DELTA, JSON, KAFKA, ORC, PARQUET, TEXT y XML.

  • Variables de Hive (por ejemplo, ${env:var}, ${configName}, ${system:var}, y spark.sql.variable) o referencias de variables de configuración mediante la ${var} sintaxis no se admiten. El uso de variables de Hive producirá una excepción.

    En su lugar, use DECLARE VARIABLElas SET VARIABLE de SQL y los marcadores de parámetros ("?") o ":var" para declarar, modificar y hacer referencia al estado de sesión. También puede usar la cláusula IDENTIFIER para parametrizar nombres de objeto en muchos casos.

Orígenes de datos compatibles

El proceso sin servidor admite los siguientes orígenes de datos para las operaciones DML (escritura, actualización, eliminación):

  • CSV
  • JSON
  • AVRO
  • DELTA
  • KAFKA
  • PARQUET
  • ORC
  • TEXT
  • UNITY_CATALOG
  • BINARYFILE
  • XML
  • SIMPLESCAN
  • ICEBERG

El proceso sin servidor admite los siguientes orígenes de datos para las operaciones de lectura:

  • CSV
  • JSON
  • AVRO
  • DELTA
  • KAFKA
  • PARQUET
  • ORC
  • TEXT
  • UNITY_CATALOG
  • BINARYFILE
  • XML
  • SIMPLESCAN
  • ICEBERG
  • MYSQL
  • POSTGRESQL
  • SQLSERVER
  • REDSHIFT
  • SNOWFLAKE
  • SQLDW(Azure Synapse)
  • DATABRICKS
  • BIGQUERY
  • ORACLE
  • SALESFORCE
  • SALESFORCE_DATA_CLOUD
  • TERADATA
  • WORKDAY_RAAS
  • MONGODB