Notas sobre a versão da computação sem servidor
Este artigo explica as características e comportamentos atualmente disponíveis e futuros na computação sem servidor para notebooks e trabalhos.
Para obter mais informações sobre computação sem servidor, consulte Conectar-se à computação sem servidor.
O Azure Databricks lança periodicamente atualizações para computação sem servidor, atualizando automaticamente o runtime de computação sem servidor para dar suporte a aprimoramentos e atualizações para a plataforma. Todos os usuários recebem as mesmas atualizações, distribuídas por um curto período de tempo.
Imagens de cliente sem servidor
A computação sem servidor do Databricks para notebooks e trabalhos apresenta uma arquitetura baseada no Spark Connect, permitindo atualizações independentes do mecanismo sem afetar o aplicativo. Para garantir a compatibilidade do aplicativo, as cargas de trabalho sem servidor usam uma API com versão, conhecida como imagem do cliente ou cliente, que permanece compatível com as versões mais recentes do servidor.
A imagem do cliente mais recente continua a receber atualizações até que uma nova imagem do cliente seja lançada. Os usuários podem selecionar qualquer uma das seguintes imagens de cliente suportadas:
Notas de versão
Esta seção inclui notas sobre a versão da computação sem servidor. As notas sobre a versão 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
28 de outubro de 2024
Essa versão de computação sem servidor corresponde aproximadamente ao Databricks Runtime 15.4
Novos recursos
- Funções de validação UTF-8: esta versão apresenta as seguintes funções para validar strings UTF-8:
- is_valid_utf8 verificou se uma cadeia de caracteres é uma 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 gerará um erro se a entrada não for uma string UTF-8 válida.
- try_validate_utf8 retornará
NULL
se a entrada não for uma string 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 Habilitar alterando uma tabela existente.
- try_url_decode função: esta versão apresenta a função try_url_decode , que decodifica uma string 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 conte com 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 CREATE ou ALTER uma tabela. - Execuções de trabalho paralelizadas para substituições seletivas: substituições seletivas usando
replaceWhere
agora executam trabalhos 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: substituições seletivas usando
replaceWhere
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 Parquet subjacentes para registrar alterações sem amplificação de gravação. - Latência de consulta aprimorada 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 ao tornarmos o carregamento de estado pelo repositório de estado do RocksDB assíncrono. Com essa alteração, você deverá visualizar 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 descartar o
checkConstraints
recurso de tabela de uma tabela Delta usandoALTER TABLE table_name DROP FEATURE checkConstraints
. Consulte Desabilitar restrições de verificação.
Alterações de comportamento
Alteração de associação de esquema para exibições: quando os tipos de dados na consulta subjacente de uma exibição são alterados daqueles usados quando a exibição foi criada pela primeira vez, o Databricks não gera mais erros para referências à exibição quando nenhuma conversão segura pode ser executada.
Em vez disso, a exibição compensa usando regras de conversão regulares sempre que possível. Essa alteração permite que o Databricks tolere as alterações de esquema de tabela mais facilmente.
Não permitir tolerância de sintaxe não documentada
!
paraNOT
lógica booliana externa: o Databricks não tolerará mais o uso de!
como sinônimo deNOT
lógica booliana externa. 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
, IS ! NULL, propriedade de campo ou coluna! NULL
,! IN
e ! BETWEEN precisam ser substituídos por:CREATE ... IF NOT EXISTS
,IS NOT NULL
, propriedade de campo ou colunaNOT NULL
,NOT IN
eNOT BETWEEN
.O operador de prefixo booliano
!
(por exemplo,!is_mgr
ou!(true AND false)
) não é afetado por essa alteração.Não permitir partes não documentadas e não processadas da sintaxe de definição de coluna em exibições: o Databricks dá suporte a CREATE VIEW com colunas nomeadas e comentários de coluna.
A especificação de tipos de coluna, restrições
NOT NULL
ouDEFAULT
foi tolerada na sintaxe sem ter nenhum efeito. O Databricks removerá essa tolerância à 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 no Photon: esta versão altera a forma como o Photon lida com erros de decodificação Base64 para corresponder ao tratamento desses erros do Spark. Antes dessas alterações, o caminho de geração de código do Photon e do Spark às vezes não gerava exceções de análise, enquanto a execução interpretada do Spark gerava corretamente
IllegalArgumentException
ouConversionInvalidInputError
. Essa atualização garante que o Photon gere consistentemente as mesmas exceções que o Spark durante erros de decodificação Base64, fornecendo um 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 que faz referência a um nome de coluna inválido retorna o UNRESOLVED_COLUMN. WITH_SUGGESTION classe de erro. Anteriormente, era retornado umINTERNAL_ERROR
.
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. Essa atualização inclui as seguintes alterações de comportamento:
Correções de bug
Análise correta de padrões regex com negação no agrupamento de caracteres aninhado: 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 caractere que NÃO seja um de 'abc'".
Além disso, o comportamento do Photon era inconsistente com o Spark para classes de caracteres aninhados. Os padrões Regex contendo classes de caracteres aninhados não usarão mais o Photon e, em vez disso, usarão o Spark. Uma classe de caracteres aninhada é qualquer padrão que contenha colchetes entre colchetes, como [[a-c][1-3]]
.
Versão 15.1
23 de julho de 2024
Essa versão de computação sem servidor corresponde aproximadamente ao Databricks Runtime 15.1
Novos recursos
Suporte para a sintaxe de asterisco (*
) na cláusula WHERE
: agora você pode usar a sintaxe de asterisco (*
) na cláusula WHERE
para referenciar todas as colunas da lista SELECT
.
Por exemplo, SELECT * FROM VALUES(1, 2) AS T(a1, a2) WHERE 1 IN(T.*)
.
Alterações
Recuperação de erro aprimorada para análise JSON: o analisador JSON usado para from_json()
e expressões de caminho JSON agora se recupera mais rapidamente da sintaxe malformada, resultando em menos perda de dados.
Ao encontrar uma sintaxe JSON malformada em um campo de struct, um valor de matriz, uma chave de mapa ou um valor de mapa, o analisador JSON retornará NULL
somente 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, do struct ou do mapa e retornou NULL
para o conteúdo restante.
Versão 14.3
15 de abril de 2024
Essa é a versão inicial da computação sem servidor. Essa versão corresponde aproximadamente ao Databricks Runtime 14.3 com algumas modificações que removem o suporte para alguns recursos herdados e não sem servidor.
Parâmetros de configuração do Spark com suporte
Para automatizar a configuração do Spark na computação sem servidor, o Azure 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 padrão éCORRECTED
)spark.sql.session.timeZone
(O valor padrão éEtc/UTC
)spark.sql.shuffle.partitions
(O valor padrão éauto
)spark.sql.ansi.enabled
(O valor padrão étrue
)
A execução de trabalhos em computação sem servidor falhará se você definir uma configuração do Spark que não esteja nessa lista.
Para obter mais informações sobre como configurar propriedades do Spark, consulte Definir propriedades de configuração do Spark no Azure Databricks.
As funções input_file 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 do arquivo para recuperar informações de metadados do arquivo.
Mudanças comportamentais
A versão da computação sem servidor 2024.15 inclui as seguintes alterações de comportamento:
- Correção de bug unhex(hexStr): ao usar a função
unhex(hexStr)
, hexStr sempre é preenchido à esquerda até 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 estã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 alteração nos nomes gerados automaticamente anteriormente usados em recursos como exibições materializadas.
- As verificações de tabela com campos de tipo
CHAR
agora são sempre preenchidas: tabelas Delta, determinadas tabelas JDBC e fontes de dados externas armazenam dados CHAR em forma não preenchida. Ao ler, o Azure Databricks agora preencherá os dados com espaços até o comprimento declarado para garantir a semântica correta. - As conversões de BIGINT/DECIMAL para TIMESTAMP geram uma exceção para valores estourados: o Azure Databricks permite a conversão de BIGINT e DECIMAL para TIMESTAMP tratando o valor como o número de segundos da época do Unix. Anteriormente, o Azure Databricks retornava valores estourados, mas agora gera uma exceção em casos de estouro. Use
try_cast
para retornar NULL em vez de uma exceção. - A execução da UDF do PySpark foi aprimorada para corresponder ao comportamento exato da execução da UDF na computação de usuário único: As seguintes alterações foram feitas:
- As UDFs com um tipo de retorno de cadeia de caracteres não convertem mais implicitamente valores que não são cadeias de caracteres em cadeias de caracteres. Anteriormente, as UDFs com um tipo de retorno
str
aplicariam um wrapperstr(..)
ao resultado, independentemente do tipo de dados real do valor retornado. - As UDFs com tipos de retorno
timestamp
não aplicam mais implicitamente uma conversão de fuso horário a carimbos de data/hora.
- As UDFs com um tipo de retorno de cadeia de caracteres não convertem mais implicitamente valores que não são cadeias de caracteres em cadeias de caracteres. Anteriormente, as UDFs com um tipo de retorno