Notas de versão da computação sem servidor
Este artigo explica os recursos e comportamentos que estão atualmente disponíveis e futuros na computação sem servidor para blocos de anotações e trabalhos.
Para obter mais informações sobre computação sem servidor, consulte Conectar-se à computação sem servidor.
O Databricks lança periodicamente atualizações para computação sem servidor, atualizando automaticamente o tempo de execução de computação sem servidor para suportar aprimoramentos e atualizações para a plataforma. Todos os usuários recebem as mesmas atualizações, implementadas em um curto período de tempo.
Notas de versão
Esta seção inclui notas de versão para computação sem servidor. As notas de lançamento são organizadas por ano e semana do ano. A computação sem servidor sempre é executada usando a versão lançada mais recentemente listada aqui.
Versão 2024.43
Outubro 28, 2024
Esta versão de computação sem servidor corresponde aproximadamente ao Databricks Runtime 15.4
Novas funcionalidades
- Funções de validação UTF-8: Esta versão apresenta as seguintes funções para validar cadeias de caracteres UTF-8:
- is_valid_utf8 verificado se uma cadeia de caracteres é uma cadeia de caracteres UTF-8 válida.
- make_valid_utf8 converte uma cadeia de caracteres UTF-8 potencialmente inválida em uma cadeia de caracteres UTF-8 válida usando caracteres de substituição.
- validate_utf8 gera um erro se a entrada não for uma cadeia de caracteres UTF-8 válida.
- try_validate_utf8 retorna
NULL
se a entrada não for uma cadeia de caracteres UTF-8 válida.
- Habilitar o UniForm Iceberg usando ALTER TABLE: Agora você pode habilitar o UniForm Iceberg em tabelas existentes sem reescrever arquivos de dados. Consulte Ativar alterando uma tabela existente.
- Função try_url_decode: Esta versão introduz a função try_url_decode , que decodifica uma cadeia de caracteres codificada por URL. Se a cadeia de caracteres não estiver no formato correto, a função retornará
NULL
em vez de gerar um erro. - Opcionalmente, permita que o otimizador dependa de restrições de chave estrangeira não impostas: para melhorar o desempenho da consulta, agora você pode especificar a
RELY
palavra-chave emFOREIGN KEY
restrições ao CRIAR ou ALTER uma tabela. - Execuções de tarefas paralelas para substituições seletivas: substituições seletivas usando
replaceWhere
trabalhos agora executados que excluem dados e inserem novos dados em paralelo, melhorando o desempenho da consulta e a utilização do cluster. - Desempenho aprimorado para feed de dados de alteração com substituições seletivas: as substituições seletivas usando
replaceWhere
em tabelas com feed de dados de alteração não gravam mais arquivos de dados de alteração separados para dados inseridos. Essas operações usam uma coluna oculta_change_type
presente nos arquivos de dados subjacentes do Parquet para registrar alterações sem amplificação de gravação. - Latência de consulta melhorada para o
COPY INTO
comando: esta versão inclui uma alteração que melhora a latência de consulta para oCOPY INTO
comando. Essa melhoria é implementada tornando o carregamento do estado pelo armazenamento de estado RocksDB assíncrono. Com essa alteração, você verá uma melhoria nos tempos de início para consultas com estados grandes, como consultas com um grande número de arquivos já ingeridos. - Suporte para descartar o recurso de tabela de restrições de verificação: agora você pode soltar o
checkConstraints
recurso de tabela de uma tabela Delta usandoALTER TABLE table_name DROP FEATURE checkConstraints
o . Consulte Desativar restrições de verificação.
Alterações de comportamento
Alteração de associação de esquema para modos de exibição: quando os tipos de dados na consulta subjacente de um modo de exibição mudam daqueles usados quando o modo de exibição foi criado pela primeira vez, o Databricks não gera mais erros para referências ao modo de exibição quando nenhuma conversão segura pode ser executada.
Em vez disso, a exibição compensa usando regras de transmissão regulares sempre que possível. Essa alteração permite que o Databricks tolere alterações de esquema de tabela mais prontamente.
Não permitir tolerância de sintaxe não documentada
!
paraNOT
lógica booleana externa: Databricks não tolerará mais o uso de!
como sinônimo paraNOT
fora da lógica booleana. Essa alteração reduz a confusão, alinha-se com o padrão SQL e torna o SQL mais portátil. Por exemplo:CREATE ... IF ! EXISTS
, É! NULL,! NULL
propriedade! IN
de coluna ou campo e ! BETWEEN deve ser substituído por:CREATE ... IF NOT EXISTS
,IS NOT NULL
,NOT NULL
propriedadeNOT IN
de coluna ou campo eNOT BETWEEN
.O operador
!
do prefixo booleano (por exemplo,!is_mgr
ou!(true AND false)
) não é afetado por esta alteração.Não permitir partes não documentadas e não processadas da sintaxe de definição de coluna em modos de exibição: o Databricks suporta CREATE VIEW com colunas nomeadas e comentários de coluna.
A especificação de tipos de coluna,
NOT NULL
restrições ouDEFAULT
foi tolerada na sintaxe sem ter qualquer efeito. O Databricks removerá essa tolerância de sintaxe. Isso reduz a confusão, alinha-se com o padrão SQL e permite aprimoramentos futuros.Tratamento consistente de erros para decodificação Base64 no Spark e Photon: Esta versão altera como o Photon lida com erros de decodificação Base64 para corresponder ao tratamento Spark desses erros. Antes dessas alterações, o caminho de geração de código do Photon e do Spark às vezes falhava em gerar exceções de análise, enquanto o Spark interpretava a execução corretamente gerada
IllegalArgumentException
ouConversionInvalidInputError
. Esta atualização garante que o Photon gere consistentemente as mesmas exceções que o Spark durante erros de decodificação Base64, fornecendo tratamento de erros mais previsível e confiável.Adicionar uma
CHECK
restrição em uma coluna inválida agora retorna o UNRESOLVED_COLUMN. WITH_SUGGESTION classe de erro: Para fornecer mensagens de erro mais úteis, no Databricks Runtime 15.3 e superior, umaALTER TABLE ADD CONSTRAINT
instrução que inclui umaCHECK
restrição fazendo referência a um nome de coluna inválido retorna o UNRESOLVED_COLUMN. WITH_SUGGESTION classe de erro. Anteriormente, umINTERNAL_ERROR
foi devolvido.
O JDK é atualizado do JDK 8 para o JDK 17
15 de agosto de 2024
A computação sem servidor para notebooks e fluxos de trabalho migrou do Java Development Kit (JDK) 8 para o JDK 17 no lado do servidor. Esta atualização inclui as seguintes alterações comportamentais:
Correções de erros
Análise correta de padrões regex com negação no agrupamento de caracteres aninhados: com essa atualização, o Azure Databricks agora dá suporte à análise correta de padrões regex com negação no agrupamento de caracteres aninhados. Por exemplo, [^[abc]]
será analisado como "qualquer personagem que NÃO seja um de 'abc'".
Além disso, o comportamento do Fóton foi inconsistente com o Spark para classes de caracteres aninhados. Os padrões Regex contendo classes de caracteres aninhadas não usarão mais o Photon e, em vez disso, usarão o Spark. Uma classe de caractere aninhada é qualquer padrão que contenha colchetes entre colchetes, como [[a-c][1-3]]
.
Versão 2024.30
Julho 23, 2024
Esta versão de computação sem servidor corresponde aproximadamente ao Databricks Runtime 15.1
Novas funcionalidades
Suporte para sintaxe de estrela (*
) na WHERE
cláusula: Agora você pode usar a sintaxe de estrela (*
) na WHERE
cláusula para fazer referência a todas as colunas da SELECT
lista.
Por exemplo, SELECT * FROM VALUES(1, 2) AS T(a1, a2) WHERE 1 IN(T.*)
.
Alterações de comportamento
Recuperação de erros aprimorada para análise JSON: o analisador JSON usado para from_json()
expressões de caminho JSON agora se recupera mais rapidamente da sintaxe malformada, resultando em menos perda de dados.
Ao encontrar sintaxe JSON malformada em um campo struct, um valor de matriz, uma chave de mapa ou um valor de mapa, o analisador JSON retornará NULL
apenas para o campo, chave ou elemento ilegível. Os campos, chaves ou elementos subsequentes serão analisados corretamente. Antes dessa alteração, o analisador JSON abandonou a análise da matriz, struct ou mapa e retornou NULL
para o conteúdo restante.
Versão 2024.15
15 de abril de 2024
Esta é a versão inicial de computação sem servidor. Esta versão corresponde aproximadamente ao Databricks Runtime 14.3 com algumas modificações que removem o suporte para alguns recursos não sem servidor e herdados.
Parâmetros de configuração do Spark suportados
Para automatizar a configuração do Spark na computação sem servidor, o Databricks removeu o suporte para definir manualmente a maioria das configurações do Spark. Você pode definir manualmente apenas os seguintes parâmetros de configuração do Spark:
spark.sql.legacy.timeParserPolicy
(o valor predefinido éEXCEPTION
)spark.sql.session.timeZone
(o valor predefinido éEtc/UTC
)spark.sql.shuffle.partitions
(o valor predefinido éauto
)spark.sql.ansi.enabled
(o valor predefinido étrue
)
O trabalho executado na computação sem servidor falhará se você definir uma configuração do Spark que não esteja nesta lista.
Para obter mais informações sobre como configurar as propriedades do Spark, consulte Definir propriedades de configuração do Spark no Azure Databricks.
input_file funções foram preteridas
As funções input_file_name(), input_file_block_length()) e input_file_block_start() foram preteridas. O uso dessas funções é altamente desencorajado.
Em vez disso, use a coluna de metadados de arquivo para recuperar informações de metadados de arquivo.
Mudanças comportamentais
A versão de computação sem servidor 2024.15 inclui as seguintes alterações comportamentais:
- unhex(hexStr) bug fix: Ao usar a função, hexStr é sempre acolchoado
unhex(hexStr)
à esquerda para um byte inteiro. Anteriormente, a função unhex ignorava o primeiro meio byte. Por exemplo:unhex('ABC')
agora produzx'0ABC'
em vez dex'BC'
. - Os aliases de coluna gerados automaticamente agora são estáveis: quando o resultado de uma expressão é referenciado sem um alias de coluna especificado pelo usuário, esse alias gerado automaticamente agora será estável. O novo algoritmo pode resultar em uma mudança nos nomes gerados automaticamente anteriormente usados em recursos como visualizações materializadas.
- As varreduras de tabela com
CHAR
campos de tipo agora são sempre acolchoadas: tabelas delta, determinadas tabelas JDBC e fontes de dados externas armazenam dados CHAR em formato não acolchoado. Durante a leitura, o Databricks agora preencherá os dados com espaços para o comprimento declarado para garantir a semântica correta. - Casts de BIGINT/DECIMAL para TIMESTAMP lançam uma exceção para valores transbordados: Databricks permite a conversão de BIGINT e DECIMAL para TIMESTAMP tratando o valor como o número de segundos da época Unix. Anteriormente, o Databricks retornava valores estourados, mas agora lança uma exceção em casos de estouro. Use
try_cast
para retornar NULL em vez de uma exceção. - A execução UDF do PySpark foi melhorada para corresponder ao comportamento exato da execução UDF na computação de um único usuário: Foram introduzidas as seguintes alterações:
- UDFs com um tipo de retorno de cadeia de caracteres não convertem mais implicitamente valores que não sejam de cadeia de caracteres em cadeias de caracteres. Anteriormente, UDFs com um tipo de retorno de aplicavam um
str(..)
wrapper ao resultado, independentemente do tipo de dados real do valor retornadostr
. - UDFs com
timestamp
tipos de retorno não aplicam mais implicitamente uma conversão de fuso horário a carimbos de data/hora.
- UDFs com um tipo de retorno de cadeia de caracteres não convertem mais implicitamente valores que não sejam de cadeia de caracteres em cadeias de caracteres. Anteriormente, UDFs com um tipo de retorno de aplicavam um
Ambiente do sistema
A computação sem servidor inclui o seguinte ambiente de sistema:
- Sistema Operacional: Ubuntu 22.04.3 LTS
- Píton: 3.10.12
- Lago Delta: 3.1.0
Bibliotecas Python instaladas
As seguintes bibliotecas Python são instaladas na computação sem servidor por padrão. Dependências adicionais podem ser instaladas usando o painel lateral Ambiente. Consulte Instalar dependências do bloco de anotações.
Biblioteca | Versão | Biblioteca | Versão | Biblioteca | Versão |
---|---|---|---|---|---|
Anyio | 3.5.0 | Argônio2-CFFI | 21.3.0 | argon2-cffi-ligações | 21.2.0 |
AstTokens | 2.0.5 | Astunparse | 1.6.3 | ATRs | 22.1.0 |
Backcall | 0.2.0 | sopa bonita4 | 4.11.1 | preto | 22.6.0 |
lixívia | 4.1.0 | pisca-pisca | 1.4 | boto3 | 1.24.28 |
botocore | 1.27.96 | Ferramentas de cache | 5.3.2 | certifi | 2022.12.7 |
cffi | 1.15.1 | chardet | 4.0.0 | Normalizador de Charset | 2.0.4 |
clicar | 8.0.4 | Comm | 0.1.2 | contorno | 1.0.5 |
criptografia | 39.0.1 | cycler | 0.11.0 | Quisto | 0.29.32 |
Databricks-Connect | 14.3.1 | Databricks-SDK | 0.20.0 | dbus-python | 1.2.18 |
depuração | 1.6.7 | decorador | 5.1.1 | DeUsedXML | 0.7.1 |
Distlib | 0.3.8 | docstring-para-markdown | 0,11 | pontos de entrada | 0.4 |
execução | 0.8.3 | facetas-visão geral | 1.1.1 | fastjsonschema | 2.19.1 |
filelock | 3.13.1 | Fonttools | 4.25.0 | Google-Auth | 2.28.1 |
googleapis-comuns-protos | 1.62.0 | Grpcio | 1.62.0 | grpcio-status | 1.62.0 |
httplib2 | 0.20.2 | idna | 3.4 | importlib-metadados | 4.6.4 |
ipyflow-núcleo | 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-cliente | 7.3.4 |
jupyter-servidor | 1.23.4 | jupyter_core | 5.2.0 | Jupyterlab-Pygments | 0.1.2 |
jupyterlab-widgets | 1.0.0 | porta-chaves | 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-em linha | 0.1.6 | Mccabe | 0.7.0 | Mistune | 0.8.4 |
mais-itertools | 8.10.0 | mypy-extensões | 0.4.3 | NBMédico | 0.5.2 |
nbclient | 0.5.13 | nbconvert | 6.5.4 | nbformat | 5.7.0 |
Ninho-Asyncio | 1.5.6 | nodeenv | 1.8.0 | bloco de notas | 6.5.2 |
notebook_shim | 0.2.2 | numpy | 1.23.5 | OAuthlib | 3.2.0 |
embalagem | 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 | Travesseiro | 9.4.0 |
pip | 22.3.1 | plataformadirs | 2.5.2 | enredo | 5.9.0 |
pluggy | 1.0.0 | Prometheus-cliente | 0.14.1 | prompt-toolkit | 3.0.36 |
protobuf | 4.25.3 | PSUTIL | 5.9.0 | psycopg2 | 2.9.3 |
ptyprocess | 0.7.0 | puro-eval | 0.2.2 | py4j | 0.10.9.7 |
pyarrow | 8.0.0 | pyarrow-hotfix | 0.5 | pyasn1 | 0.5.1 |
pyasn1-módulos | 0.3.0 | Pyccolo | 0.0.52 | pycparser | 2.21 |
Pidântico | 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 | pirsistent | 0.18.0 |
python-dateutil | 2.8.2 | python-lsp-jsonrpc | 1.1.1 | python-lsp-servidor | 1.8.0 |
pytoolconfig | 1.2.5 | pytz | 2022.7 | Pyzmq | 23.2.0 |
pedidos | 2.28.1 | corda | 1.7.0 | RSA | 4,9 |
s3transferir | 0.6.2 | scikit-learn | 1.1.1 | scipy | 1.10.0 |
seaborn | 0.12.2 | Armazenamento Secreto | 3.3.1 | Enviar2Lixo | 1.8.0 |
setuptools | 65.6.3 | seis | 1.16.0 | sniffio | 1.2.0 |
Soupsieve | 2.3.2.post1 | ssh-import-id | 5.11 | dados de pilha | 0.2.0 |
statsmodels | 0.13.5 | tenacidade | 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 | traços | 5.7.1 |
typing_extensions | 4.4.0 | Ujson | 5.4.0 | Upgrades autônomos | 0.1 |
urllib3 | 1.26.14 | virtualenv | 20.16.7 | wadllib | 1.3.6 |
largura de wc | 0.2.5 | WebEncodings | 0.5.1 | Websocket-cliente | 0.58.0 |
whatthepatch | 1.0.2 | roda | 0.38.4 | widgetsnbextension | 3.6.1 |
Yapf | 0.33.0 | Zipp | 1.0.0 |