Compartir vía


Notas de la versión de proceso sin servidor

En este artículo se explican las características y comportamientos que están disponibles actualmente y próximos en el proceso sin servidor para cuadernos y flujos de trabajo.

Para obtener más información sobre el proceso sin servidor, consulte Conectar al proceso sin servidor.

Databricks publica periódicamente actualizaciones de proceso sin servidor, actualizando automáticamente el entorno de ejecución de proceso sin servidor para admitir mejoras y actualizaciones en la plataforma. Todos los usuarios obtienen las mismas actualizaciones, que se han implementado durante un breve período de tiempo.

Notas de la versión

En esta sección se incluyen notas de la versión para el proceso sin servidor. Las notas de la versión se organizan por año y semana del año. El proceso sin servidor siempre se ejecuta con la versión publicada más recientemente que se muestra aquí.

Versión 2024.43

28 de octubre de 2024

Esta versión de proceso sin servidor se corresponde aproximadamente con Databricks Runtime 15.4

Nuevas características

  • Funciones de validación UTF-8: esta versión presenta las siguientes funciones para validar cadenas UTF-8:
    • is_valid_utf8 comprobó si una cadena es una cadena UTF-8 válida.
    • make_valid_utf8 convierte una cadena UTF-8 potencialmente no válida en una cadena UTF-8 válida mediante caracteres de sustitución.
    • validate_utf8 genera un error si la entrada no es una cadena UTF-8 válida.
    • try_validate_utf8 devuelve NULL si la entrada no es una cadena UTF-8 válida.
  • Habilitar UniForm Iceberg con ALTER TABLE: ahora puede habilitar UniForm Iceberg en tablas existentes sin volver a escribir archivos de datos. Consulte Habilitación modificando una tabla existente.
  • try_url_decode función: esta versión presenta la función try_url_decode , que descodifica una cadena con codificación URL. Si la cadena no tiene el formato correcto, la función devuelve NULL en lugar de generar un error.
  • Opcionalmente, permita que el optimizador dependa de restricciones de clave externa no aplicadas: para mejorar el rendimiento de las consultas, ahora puede especificar la RELY palabra clave en FOREIGN KEY restricciones al crear o MODIFICAR una tabla.
  • Ejecuciones de trabajos en paralelo para sobrescrituras selectivas: sobrescrituras selectivas con replaceWhere trabajos que ahora ejecutan trabajos que eliminan datos e insertan nuevos datos en paralelo, lo que mejora el rendimiento de las consultas y el uso del clúster.
  • Rendimiento mejorado para la fuente de distribución de datos de cambios con sobrescrituras selectivas: las sobrescrituras selectivas que se usan replaceWhere en tablas con fuentes de distribución de datos modificados ya no escriben archivos de datos modificados independientes para los datos insertados. Estas operaciones usan una columna oculta _change_type presente en los archivos de datos Parquet subyacentes para registrar cambios sin amplificación de escritura.
  • Latencia de consulta mejorada para el COPY INTO comando: esta versión incluye un cambio que mejora la latencia de consulta para el COPY INTO comando. Esta mejora se implementa haciendo asincrónica la carga de estado por parte del almacén de estados de RocksDB. Con este cambio, debería ver una mejora en las horas de inicio de las consultas con estados grandes, por ejemplo, consultas con un gran número de archivos ya ingeridos.
  • Compatibilidad con la eliminación de la característica de tabla de restricciones check: ahora puede quitar la checkConstraints característica de tabla de una tabla Delta mediante ALTER TABLE table_name DROP FEATURE checkConstraints. Consulte Deshabilitación de las restricciones de comprobación.

Cambios de comportamiento

  • Cambio de enlace de esquema para vistas: cuando los tipos de datos de la consulta subyacente de una vista cambian de los usados cuando se creó la vista por primera vez, Databricks ya no produce errores para las referencias a la vista cuando no se puede realizar ninguna conversión segura.

    En su lugar, la vista compensa mediante reglas de conversión normales siempre que sea posible. Este cambio permite a Databricks tolerar cambios de esquema de tabla más fácilmente.

  • No permitir la tolerancia de sintaxis no documentada ! para NOT la lógica booleana externa: Databricks ya no tolerará el uso de ! como sinónimo de NOT fuera de la lógica booleana. Este cambio reduce la confusión, se alinea con el Estándar SQL y hace que SQL sea más portátil. Por ejemplo:

    CREATE ... IF ! EXISTS, IS ! NULL, ! NULL propiedad de columna o campo, ! IN y ! BETWEEN debe reemplazarse por:

    CREATE ... IF NOT EXISTS, IS NOT NULL, NOT NULL propiedad de columna o campo, NOT IN y NOT BETWEEN.

    El operador de prefijo booleano! (por ejemplo !is_mgr, o !(true AND false)) no se ve afectado por este cambio.

  • No permitir partes no documentadas y no procesadas de la sintaxis de definición de columna en vistas: Databricks admite CREATE VIEW con columnas con nombre y comentarios de columna.

    La especificación de tipos de columnas, restricciones NOT NULL o DEFAULT se ha tolerado en la sintaxis sin tener ningún efecto. Databricks quitará esta tolerancia de sintaxis. Si lo hace, se reduce la confusión, se alinea con el Estándar SQL y permite mejoras futuras.

  • Control coherente de errores para la descodificación de Base64 en Spark y Photon: esta versión cambia cómo Photon controla los errores de descodificación de Base64 para que coincidan con el control de Spark de estos errores. Antes de estos cambios, la ruta de acceso de generación de código Photon y Spark a veces no podía generar excepciones de análisis, mientras que la ejecución de Spark interpretó correctamente IllegalArgumentException o ConversionInvalidInputError. Esta actualización garantiza que Photon genere de forma coherente las mismas excepciones que Spark durante los errores de descodificación de Base64, lo que proporciona un control de errores más predecible y confiable.

  • Agregar una CHECK restricción en una columna no válida ahora devuelve el UNRESOLVED_COLUMN. WITH_SUGGESTION clase de error: para proporcionar mensajería de errores más útil, en Databricks Runtime 15.3 y versiones posteriores, una ALTER TABLE ADD CONSTRAINT instrucción que incluye una restricción que hace referencia a un CHECK nombre de columna no válido devuelve el UNRESOLVED_COLUMN. WITH_SUGGESTION clase de error. Anteriormente, se devolvía un INTERNAL_ERROR.

El JDK se actualiza de JDK 8 a JDK 17

15 de agosto de 2024

El proceso sin servidor para cuadernos y flujos de trabajo se ha migrado del Kit de desarrollo de Java (JDK) 8 a JDK 17 al lado servidor. Esta actualización incluye los siguientes cambios de comportamiento:

Corrección de errores

Análisis correcto de patrones regex con negación en la agrupación de caracteres anidados: con esta actualización, Azure Databricks ahora admite el análisis correcto de patrones regex con negación en la agrupación de caracteres anidados. Por ejemplo, [^[abc]] se analizará como "cualquier carácter que no sea de tipo 'abc'".

Además, el comportamiento de Photon era incoherente con Spark para las clases de caracteres anidadas. Los patrones regex que contienen clases de caracteres anidados ya no usarán Photon y, en su lugar, usarán Spark. Una clase de caracteres anidada es cualquier patrón que contenga corchetes entre corchetes, como [[a-c][1-3]].

Versión 2024.30

23 de julio de 2024

Esta versión de proceso sin servidor se corresponde aproximadamente con Databricks Runtime 15.1

Nuevas características

Compatibilidad con la cláusula star (*) en la sintaxis WHERE: ahora puede usar la cláusula star (*) en la sintaxis WHERE para hacer referencia a todas las columnas de la lista de SELECT.

Por ejemplo, SELECT * FROM VALUES(1, 2) AS T(a1, a2) WHERE 1 IN(T.*).

Cambios de comportamiento

Recuperación de errores mejorada para el análisis de JSON: el analizador de JSON usado para from_json() y las expresiones de ruta de acceso de JSON ahora se recuperan más rápido de una sintaxis con formato incorrecto, lo cual da lugar a una pérdida de datos inferior.

Al encontrar una sintaxis JSON con formato incorrecto en un campo de estructura, un valor de matriz, una clave de mapa o un valor de mapa, el analizador de JSON ahora devolverá NULL solo para el campo, la clave o el elemento no legibles. Los campos, claves o elementos posteriores se analizarán correctamente. Antes de este cambio, el analizador de JSON abandonaba el análisis de la matriz, la estructura o el mapa y devolvía NULL para el contenido restante.

Versión 2024.15

15 de abril de 2024

Esta es la versión inicial de proceso sin servidor. Esta versión se corresponde aproximadamente con Databricks Runtime 14.3 con algunas modificaciones que quitan la compatibilidad con algunas características no sin servidor y heredadas.

Parámetros de configuración de Spark admitidos

Para automatizar la configuración de Spark en un proceso sin servidor, Databricks ha quitado la compatibilidad para establecer manualmente la mayoría de las configuraciones de Spark. Solo puede establecer manualmente los siguientes parámetros de configuración de Spark:

  • spark.sql.legacy.timeParserPolicy (El valor predeterminado es EXCEPTION)
  • spark.sql.session.timeZone (El valor predeterminado es Etc/UTC)
  • spark.sql.shuffle.partitions (El valor predeterminado es auto)
  • spark.sql.ansi.enabled (El valor predeterminado es true)

Se producirá un error en las ejecuciones de trabajo en el proceso sin servidor si establece una configuración de Spark que no está en esta lista.

Para más información sobre cómo configurar las propiedades de Spark, consulte Establecimiento de propiedades de configuración de Spark en Azure Databricks.

input_file funciones están en desuso

Las funciones input_file_name(), input_file_block_length(), y input_file_block_start() han quedado en desuso. No se recomienda usar estas funciones.

En su lugar, use la columna de metadatos de archivo para recuperar información de metadatos de archivo.

Cambios de comportamiento

La versión de proceso sin servidor 2024.15 incluye los siguientes cambios de comportamiento:

  • unhex(hexStr) corrección de errores: Cuando se usa la función unhex(hexStr), hexStr siempre se rellena a un byte completo. Anteriormente, la función unhex omitió el primer byte medio. Por ejemplo: unhex('ABC')ahora genera x'0ABC' en lugar de x'BC'.
  • Los alias de columna generados automáticamente ahora son estables: Cuando se hace referencia al resultado de una expresión sin un alias de columna especificado por el usuario, este alias generado automáticamente ahora será estable. El nuevo algoritmo puede dar lugar a un cambio en los nombres generados automáticamente previamente usados en características como las vistas materializadas.
  • Los recorridos de tablas conCHAR campos de tipo ahora se rellenan siempre: Tablas Delta, determinadas tablas JDBC y orígenes de datos externos almacenan datos CHAR en un formulario no rellenado. Al leer, Databricks ahora rellenará los datos con espacios a la longitud declarada para garantizar la semántica correcta.
  • Las conversiones de BIGINT/DECIMAL a TIMESTAMP producen una excepción para los valores desbordados: Databricks permite la conversión de BIGINT y DECIMAL a TIMESTAMP tratando el valor como el número de segundos de la época de Unix. Anteriormente, Databricks devolvería valores desbordados, pero ahora produce una excepción en casos de desbordamiento. Use try_cast para devolver NULL en lugar de una excepción.
  • Se ha mejorado la ejecución de UDF de PySpark para que coincida con el comportamiento exacto de la ejecución de UDF en un proceso de usuario único: Se han realizado los siguientes cambios:
    • Las UDF con un tipo de valor devuelto de cadena ya no convierten implícitamente valores que no son de cadena en cadenas. Anteriormente, las UDF con un tipo devuelto straplicarían un str(..)contenedor al resultado independientemente del tipo de datos real del valor devuelto.
    • Las UDF con timestamp tipos devueltos ya no aplican implícitamente una conversión de zona horaria a las marcas de tiempo.

Entorno del sistema

El proceso sin servidor incluye el siguiente entorno del sistema:

  • Sistema operativo: Ubuntu 22.04.3 LTS
  • Python: 3.10.12
  • Delta Lake: 3.1.0

Bibliotecas de Python instaladas

Las siguientes bibliotecas de Python se instalan en proceso sin servidor de forma predeterminada. Se pueden instalar dependencias adicionales mediante el panel lateral Entorno. Consulte Instalación de dependencias de cuaderno.

Biblioteca Versión Biblioteca Versión Biblioteca Versión
anyio 3.5.0 argon2-cffi 21.3.0 argon2-cffi-bindings 21.2.0
asttokens 2.0.5 astunparse 1.6.3 attrs 22.1.0
backcall 0.2.0 beautifulsoup4 4.11.1 black 22.6.0
bleach 4.1.0 blinker 1.4 boto3 1.24.28
botocore 1.27.96 cachetools 5.3.2 certifi 2022.12.7
cffi 1.15.1 chardet 4.0.0 charset-normalizer 2.0.4
click 8.0.4 comm 0.1.2 contourpy 1.0.5
criptografía 39.0.1 cycler 0.11.0 Cython 0.29.32
databricks-connect 14.3.1 databricks-sdk 0.20.0 dbus-python 1.2.18
debugpy 1.6.7 decorator 5.1.1 defusedxml 0.7.1
distlib 0.3.8 docstring-to-markdown 0,11 entrypoints 0,4
executing 0.8.3 facets-overview 1.1.1 fastjsonschema 2.19.1
filelock 3.13.1 fonttools 4.25.0 google-auth 2.28.1
googleapis-common-protos 1.62.0 grpcio 1.62.0 grpcio-status 1.62.0
httplib2 0.20.2 idna 3.4 importlib-metadata 4.6.4
ipyflow-core 0.0.198 ipykernel 6.25.0 ipython 8.14.0
ipython-genutils 0.2.0 ipywidgets 7.7.2 jedi 0.18.1
jeepney 0.7.1 Jinja2 3.1.2 jmespath 0.10.0
joblib 1.2.0 jsonschema 4.17.3 jupyter-client 7.3.4
jupyter-server 1.23.4 jupyter_core 5.2.0 jupyterlab-pygments 0.1.2
jupyterlab-widgets 1.0.0 keyring 23.5.0 kiwisolver 1.4.4
launchpadlib 1.10.16 lazr.restfulclient 0.14.4 lazr.uri 1.0.6
lxml 4.9.1 MarkupSafe 2.1.1 matplotlib 3.7.0
matplotlib-inline 0.1.6 mccabe 0.7.0 mistune 0.8.4
more-itertools 8.10.0 mypy-extensions 0.4.3 nbclassic 0.5.2
nbclient 0.5.13 nbconvert 6.5.4 nbformat 5.7.0
nest-asyncio 1.5.6 nodeenv 1.8.0 notebook 6.5.2
notebook_shim 0.2.2 numpy 1.23.5 oauthlib 3.2.0
empaquetado 23,2 pandas 1.5.3 pandocfilters 1.5.0
parso 0.8.3 pathspec 0.10.3 patsy 0.5.3
pexpect 4.8.0 pickleshare 0.7.5 Pillow 9.4.0
pip 22.3.1 platformdirs 2.5.2 plotly 5.9.0
pluggy 1.0.0 prometheus-client 0.14.1 prompt-toolkit 3.0.36
protobuf 4.25.3 psutil 5.9.0 psycopg2 2.9.3
ptyprocess 0.7.0 pure-eval 0.2.2 py4j 0.10.9.7
pyarrow 8.0.0 pyarrow-hotfix 0.5 pyasn1 0.5.1
pyasn1-modules 0.3.0 pyccolo 0.0.52 pycparser 2.21
pydantic 1.10.6 pyflakes 3.1.0 Pygments 2.11.2
PyGObject 3.42.1 PyJWT 2.3.0 pyodbc 4.0.32
pyparsing 3.0.9 pyright 1.1.294 pyrsistent 0.18.0
Python-dateutil 2.8.2 python-lsp-jsonrpc 1.1.1 python-lsp-server 1.8.0
pytoolconfig 1.2.5 pytz 2022.7 pyzmq 23.2.0
requests 2.28.1 rope 1.7.0 rsa 4,9
s3transfer 0.6.2 scikit-learn 1.1.1 scipy 1.10.0
seaborn 0.12.2 SecretStorage 3.3.1 Send2Trash 1.8.0
setuptools 65.6.3 six (seis) 1.16.0 sniffio 1.2.0
soupsieve 2.3.2.post1 ssh-import-id 5.11 stack-data 0.2.0
statsmodels 0.13.5 tenacity 8.1.0 terminado 0.17.1
threadpoolctl 2.2.0 tinycss2 1.2.1 tokenize-rt 4.2.1
tomli 2.0.1 tornado 6.1 traitlets 5.7.1
typing_extensions 4.4.0 ujson 5.4.0 unattended-upgrades 0,1
urllib3 1.26.14 virtualenv 20.16.7 wadllib 1.3.6
wcwidth 0.2.5 webencodings 0.5.1 websocket-client 0.58.0
whatthepatch 1.0.2 wheel 0.38.4 widgetsnbextension 3.6.1
yapf 0.33.0 Zipp 1.0.0