Compartir a través de


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.

Próximos cambios de comportamiento

En esta sección se resaltan los cambios de comportamiento que se producen en la siguiente versión de proceso sin servidor. Cuando los cambios se insertan en producción, se agregarán a las notas de la versión.

Septiembre de 2024

Cambio de enlace de esquema para vistas

Cuando los tipos de datos de una vista cambian de consulta subyacente de los usados cuando se creó la vista por primera vez, Databricks ya no producirá errores para las referencias a la vista cuando no se pueda realizar ninguna conversión segura. En su lugar, la vista compensará 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 de ! no documentada para NOT lógica booleana externa

Databricks ya no tolerará el uso de ! como sinónimo de NOT fuera de la lógica booleana. 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.

Este cambio reduce la confusión, se alinea con el Estándar SQL y hace que SQL sea más portátil.

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.

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í.

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

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.

No se admiten comandos SQL y API de almacenamiento en caché

No se admite el uso de Dataframe y las API de caché de SQL. El uso de cualquiera de estas API o comandos SQL producirá una excepción.

API no admitidas:

Comandos SQL no admitidos:

No se admiten vistas temporales globales

No se admite la creación de vistas temporales globales. El uso de cualquiera de estos comandos producirá una excepción:

En su lugar, Databricks recomienda usar vistas temporales de sesión o crear tablas en las que se requieran pasos de datos entre sesiones.

No se admite CREATE FUNCTION (externo)

No se admite el comando CREATE FUNCTION (externo). El uso de este comando produce una excepción.

En su lugar, Databricks recomienda usar CREATE FUNCTION (SQL y Python) para crear UDF.

No se admiten tablas de Hive SerDe

No se admiten las tablas de Hive SerDe. Además, no se admite el comando correspondiente LOAD DATA 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, ORC, TEXT y XML.

No se admiten variables de Hive

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 VARIABLE, SET VARIABLE, y Referencias a variables de sesión SQL y 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.

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.
  • Ejecución de UDF de PySpark se ha mejorado para que coincida con el comportamiento exacto de la ejecución de UDF en el proceso de un solo usuario: 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