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 Azure Databricks lança periodicamente atualizações para computação sem servidor, atualizando automaticamente o tempo de execução 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, implementadas em um curto período de tempo.
versões de ambiente sem servidor
A computação sem servidor 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 versionada, conhecida como versão do ambiente ou cliente, que permanece compatível com as versões mais recentes do servidor.
A versão mais recente do ambiente continua a receber atualizações até que uma nova versão seja lançada. Os usuários podem selecionar qualquer uma das seguintes versões de ambiente suportadas:
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 15.4
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.
- Ativar UniForm Iceberg usando ALTER TABLE: Agora você pode habilitar o UniForm Iceberg em tabelas existentes sem reescrever arquivos de dados. Consulte Ativar leituras do Iceberg numa 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 aplicadas: Para melhorar o desempenho da consulta, agora pode especificar a palavra-chave
RELY
nas restrições deFOREIGN KEY
quando CRIAR ou ALTERAR uma tabela. -
Execução de trabalho paralelizado para substituições seletivas: As 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: 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 utilizam uma coluna_change_type
oculta nos ficheiros de dados Parquet subjacentes para registar alterações sem aumento no volume de escrita. -
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 remover o recurso de restrições de verificação da tabela: Agora é possível eliminar o recurso de tabela
checkConstraints
de uma tabela Delta usandoALTER TABLE table_name DROP FEATURE checkConstraints
. Consulte Desativar restrições de verificação.
Alterações de comportamento
Alteração de vinculação de esquema para vistas: Quando os tipos de dados na consulta subjacente de uma vista mudam dos usados quando a vista foi criada pela primeira vez, o Databricks deixou de lançar erros para referências à vista quando nenhuma conversão segura pode ser executada.
Em vez disso, o modo de exibição
compensa usando regras de de transmissão deregulares 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 de coluna ou campo,! IN
e ! BETWEEN deve ser substituído por:CREATE ... IF NOT EXISTS
,IS NOT NULL
, coluna ou campo de propriedadeNOT NULL
,NOT IN
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: Databricks oferece suporte a CREATE VIEW com colunas nomeadas e comentários de coluna.
A especificação de tipos de coluna, restrições de
NOT NULL
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 restrição de
CHECK
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, uma instruçãoALTER TABLE ADD CONSTRAINT
que inclui uma restrição deCHECK
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 15.1
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 cláusula WHERE
: Agora você pode usar a sintaxe de estrela (*
) na cláusula WHERE
para fazer referência a 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 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 14.3
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 serverless e herdados.
Parâmetros de configuração do Spark suportados
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 predefinido éCORRECTED
) -
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 do arquivo para recuperar informações de metadados do 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.
-
Verificações de tabela com campos de tipo
CHAR
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 Azure Databricks agora preencherá os dados com espaços para o comprimento declarado para garantir a semântica correta. -
As conversões de BIGINT/DECIMAL para TIMESTAMP lançam uma exceção para valores em excesso: Azure Databricks permite a conversão de BIGINT e DECIMAL para TIMESTAMP, tratando o valor como o número de segundos desde a Unix epoch. Anteriormente, o Azure Databricks devolvia valores em overflow, mas agora gera uma exceção em casos de overflow. 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 do tipo cadeia de caracteres não convertem mais implicitamente valores que não sejam desse tipo 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 tipos de retorno
timestamp
já não aplicam implicitamente uma conversão de fuso horário a timestamps.
- UDFs com um tipo de retorno do tipo cadeia de caracteres não convertem mais implicitamente valores que não sejam desse tipo em cadeias de caracteres. Anteriormente, UDFs com um tipo de retorno de aplicavam um