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 esEXCEPTION
)spark.sql.session.timeZone
(El valor predeterminado esEtc/UTC
)spark.sql.shuffle.partitions
(El valor predeterminado esauto
)spark.sql.ansi.enabled
(El valor predeterminado estrue
)
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:
- df.cache(), df.persist()
- df.unpersist()
- spark.catalog.cacheTable()
- spark.catalog.uncacheTable()
- spark.catalog.clearCache()
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 generax'0ABC'
en lugar dex'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 con
CHAR
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
str
aplicarían unstr(..)
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.
- 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
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 |