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 enFOREIGN 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 elCOPY 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 medianteALTER 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
!
paraNOT
la lógica booleana externa: Databricks ya no tolerará el uso de!
como sinónimo deNOT
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
yNOT 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
oDEFAULT
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
oConversionInvalidInputError
. 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, unaALTER TABLE ADD CONSTRAINT
instrucción que incluye una restricción que hace referencia a unCHECK
nombre de columna no válido devuelve el UNRESOLVED_COLUMN. WITH_SUGGESTION clase de error. Anteriormente, se devolvía unINTERNAL_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 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.
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. - 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
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 |