Notas de lançamento de Snowpark Library for Scala and Java para 2022¶
Este artigo contém as notas de versão da Biblioteca Snowpark para Scala e da Biblioteca Snowpark para Java, incluindo o seguinte, quando aplicável:
Mudanças de comportamento
Novos recursos
Correções de bugs voltados para o cliente
Snowflake usa controle de versão semântico para atualizações de Snowpark Library for Scala and Java.
Versão 1.6.2 (26 de outubro de 2022)¶
Versão compatível do Snowflake: 6.35.x
Melhorias¶
Foram feitas melhorias internas para procedimentos armazenados escritos em Java ou Scala.
Versão 1.6.1 (30 de setembro de 2022)¶
Versão compatível do Snowflake: 6.31.x
Esta versão tem um problema conhecido que pode interromper a criação de objetos temporários. Use 1.6.2 em vez disso.
Melhorias¶
Foram feitas melhorias internas para procedimentos armazenados escritos em Java ou Scala.
Versão 1.6.0 (12 de agosto de 2022)¶
Versão compatível do Snowflake: 6.27.x
Melhorias¶
Foram feitas melhorias internas nas UDTFs.
Versão 1.5.0 (1 de julho de 2022)¶
Versão compatível do Snowflake: 6.22.x
Novos recursos¶
Melhorias¶
Consultas SQL geradas pela biblioteca cliente do Snowpark otimizadas.
Melhorada a mensagem de erro registrada quando a biblioteca Snowpark não consegue resolver um nome de coluna em
um DataFrame (por exemplo, quando você tenta acessar uma coluna que não existe).
Versão 1.4.1 (26 de maio de 2022)¶
Versão compatível do Snowflake: 6.17.x
Alterações¶
Atualizada a versão de
jackson-core
ejackson-annotations
da qual a biblioteca Snowpark depende para 2.13.2.Atualizada a versão de
jackson-databind
da qual a biblioteca Snowpark depende para 2.13.2.2.As classes
jackson-core
,jackson-databind
ejackson-annotations
foram removidas do arquivo JAR do Snowpark.Se você baixou o arquivo
.tar.gz
/.zip
, os arquivos JAR para as classes Jackson agora são fornecidos separadamente no subdiretóriolib/
(jackson-core-2.13.2.jar
,jackson-databind-2.13.2.2.jar
ejackson-annotations-2.13.2.jar
).Se você estiver especificando a biblioteca Snowpark como uma dependência em seu arquivo
pom.xml
e quiser depender de uma versão diferente das bibliotecas Jackson em seu pom.xml, você pode excluir a dependência nas bibliotecas Jackson da dependência da biblioteca Snowpark.
Versão 1.4.0 (28 de abril de 2022)¶
Versão compatível do Snowflake: 6.14.x
Novos recursos¶
Disponibilização geral da API Snowpark Java no AWS e Azure.
A API ainda está disponível como recurso em versão preliminar em GCS.
Disponibilização geral da API Snowpark Scala no Azure.
Antes deste lançamento, a API estava disponível apenas em AWS. A API ainda está disponível como recurso em versão preliminar em GCS.
Adicionada uma API Java para criar UDTFs. Observe que este recurso está em versão preliminar.
Adicionadas novas APIs em Scala e Java para carregar e descarregar os dados de um estágio (
FileOperation.uploadStream and FileOperation.downloadStream
).Adicionado o método
DataFrameWriter.option
em Scala e Java para especificar como os valores nas colunas em DataFrame devem ser mapeados para colunas na tabela. O método de opção permite especificar queDataFrameWriter
deve usar o nome da coluna, em vez da ordem das colunas.
Melhorias¶
Desativou o Closure Cleaner em sessões Java. O Closure Cleaner só funciona em programas Scala.
Suporte aprimorado a
Array
eMap
na API Java Row.
Versão 1.3.0 (18 de março de 2022)¶
Versão compatível do Snowflake: 6.8.x
Novos recursos¶
Suporte adicionado para escrever procedimentos armazenados em Java.
Suporte adicionado para mesclar linhas de forma assíncrona em uma tabela no Scala.
Versão 1.2.0 (2 de março de 2022)¶
Versão compatível do Snowflake: 6.5.x
Novos recursos¶
Adicionada a API Java para Snowpark.
Suporte em versão preliminar adicionado na API Scala para criar UDTFs.
Adicionada uma versão separada da biblioteca que atende aos requisitos de segurança do FIPS (Federal Information Processing Standard). Você pode baixar esta biblioteca em:
Para apontar para a biblioteca compatível com FIPS de um arquivo de compilação sbt ou projeto Maven, use
snowpark-fips
comoartifactId
.
Versão 1.1.0 (4 de fevereiro de 2022)¶
Versão compatível do Snowflake: 6.2.x
Adição de suporte para Como escrever procedimentos armazenados em Scala.
A referência de API para esta versão está disponível na documentação do Snowflake e em um arquivo .zip
ou .tar.gz
no Snowflake Client Repository.
Versão 1.0.0 (26 de janeiro de 2022)¶
Versão compatível do Snowflake: 6.1.x
Disponibilidade geral (GA) lançada em AWS. (O Snowpark ainda é um recurso em versão preliminar no Azure e no GCP.)
A referência de API para esta versão está disponível em um arquivo .zip
ou .tar.gz
no Snowflake Client Repository.
Versão 0.12.0 (4 de janeiro de 2022)¶
Versão compatível do Snowflake: 5.45.x
A referência de API para esta versão está disponível em um arquivo .zip
ou .tar.gz
no Snowflake Client Repository.
Novos recursos¶
Melhorias¶
No código gerado para UDFs, substituiu um bloco de código estático por uma função de instância de objeto.
Mensagens de erro reorganizadas.
Alterada a função
saveAsTable
para que uma nova tabela não seja criada no modo de anexo.Função
callUDF
melhorada para oferecer suporte a qualquer tipo de argumento.A biblioteca foi alterada para definir a tag de consulta no nível da instrução, em vez de no nível da sessão.
Versão 0.11.0 (16 de novembro de 2021)¶
Versão compatível do Snowflake: 5.45.x
A referência de API para esta versão está disponível em um arquivo .zip
ou .tar.gz
no Snowflake Client Repository.
Novos recursos¶
Adicionado o método gerador à classe
Session
e os métodos seq1, seq2, seq4, seq8 e funções uniformes para o objeto de funções.Adicionado o método getSessionInfo à classe Session.
APIs adicionadas para executar ações em DataFrames de forma assíncrona.
Melhorias¶
Atualizado o driver JDBC Snowflake para 3.13.9. Melhorada a mensagem de erro relatada quando nenhum banco de dados atual é selecionado para uso.
Versão 0.10.1 (27 de outubro de 2021)¶
Versão compatível do Snowflake: 5.38.x
A referência de API para esta versão está disponível em um arquivo .zip
ou .tar.gz
no Snowflake Client Repository.
Correções de bugs¶
Corrigido um problema com o carregamento de arquivos para um estágio GCP onde o prefixo errado era usado.
Corrigido um problema em que uma resposta HTTP 403 era retornada ao acessar um URL pré-assinado para GCP.
Versão 0.10.0 (18 de outubro de 2021)¶
Versão compatível do Snowflake: 5.37.x
A referência de API para esta versão está disponível em um arquivo .zip
ou .tar.gz
no Snowflake Client Repository.
Novos recursos¶
Adicionado o novo método dropDuplicates à classe DataFrame.
Adicionado suporte para expressões à classe Coluna (com o método in) e ao objeto de funções (com a função in).
Estendido o iterador retornado por DataFrame.toLocalIterator para oferecer suporte à interface
Closeable
, que permite chamar o método close no iterador.Adicionado suporte para a nova propriedade de configuração
snowpark_request_timeout_in_seconds
. Você pode definir isso no mapa/arquivo de configuração para ajustar o tempo limite que a biblioteca usa ao carregar dependências para um estágio. Por padrão, o tempo limite é 86400 (1 dia).
Melhorias¶
Lógica adicionada ao método DataFrame.withColumns para verificar se nomes de colunas de entrada duplicados não são especificados.
Os métodos
clone
atualizados nas classesCopyable
eUpdatable
retornam os tipos DataFrame corretos.Adicionado suporte para especificar a ID do aplicativo
definindo a propriedade do aplicativo JDBC no mapa/arquivo de configuração.
Mudanças de comportamento¶
APIs removidas destinam-se apenas à Java da Scala API.
Agente de log padrão log4j substituído por SLF4J SimpleLogger.
Correções de bugs¶
Atualizada a biblioteca para fechar instruções não utilizadas automaticamente para reduzir o uso de memória.
Corrigida a ordem das colunas no resultado do método
DataFrame.withColumns
.
Versão 0.9.0 (20 de setembro de 2021)¶
Versão compatível do Snowflake: 5.34.x
A referência de API para esta versão está disponível em um arquivo .zip
ou .tar.gz
no Snowflake Client Repository.
Novos recursos¶
Adicionada uma nova subclasse DataFrame, CopyableDataFrame, que você pode usar para copiar dados de um arquivo preparado para uma tabela. Isso é equivalente ao comando COPY INTO <tabela>.
Adicionado o novo método DataFrame.rename() para renomear colunas em um DataFrame.
Adicionada a nova função functions.iff() para especificar uma expressão if-then-else. Isso equivale à função IFF.
Adicionados novos construtores para a classe DecimalType.
Mudanças de comportamento¶
Os métodos DataFrame.union() e DataFrame.unionByName() foram alterados para usar UNION em vez de UNION ALL.
Correções de bugs¶
Corrigido o erro
SQL compilation error: Missing column specification
que poderia ocorrer quando a biblioteca Snowpark criava uma exibição temporária.
Versão 0.8.0 (9 de agosto de 2021)¶
Versão compatível do Snowflake: 5.30.x
A referência de API para esta versão está disponível em um arquivo .zip
ou .tar.gz
no Snowflake Client Repository.
Melhorias¶
Alguns códigos internos refatorados para remover algumas dependências.
Correções de bugs¶
Corrigido um problema com literais BigDecimal em casos em que a escala pode ser maior que a precisão.
Corrigido um problema que poderia ocorrer ao executar múltiplas operações de conjunto (por exemplo, união, intersecção etc.).
Versão 0.7.0 (23 de julho de 2021)¶
Versão compatível do Snowflake: 5.29.x
A referência de API para esta versão está disponível em um arquivo .zip
ou .tar.gz
no Snowflake Client Repository.
Nova APIs¶
Lançou o novo método Session.close(). Chame esse método para fechar a sessão do Snowpark, o que cancela todas as consultas em execução e impede o uso subsequente desta sessão para executar consultas.
Lançou a nova classe atualizável. Atualizável estende a classe DataFrame e fornece recursos adicionais relacionados à tabela (por exemplo, a capacidade de atualizar e excluir valores).
O método Session.table() agora retorna um objeto atualizável, em vez de um objeto DataFrame.
Lançadas novas assinaturas para os métodos registerTemporary na classe UDFRegistration. Essas assinaturas não possuem um parâmetro para o nome da UDF, o que significa que você pode usá-las para registrar uma UDF temporário anônima.
Mudanças de API¶
Conforme mencionado acima, o método
Session.table()
agora retorna um objetoUpdatable
, que estende oDataFrame
.Na classe
Geography
, foi removido o suporte para formatos diferentes de GeoJSON. Agora,Geography
suporta apenas o formato de dados GeoJSON.
Melhorias¶
Método
DataFrame.cacheResult()
aprimorado para reduzir a possibilidade de erros de «objeto já existe».Melhoradas algumas mensagens de erro.
Adicionada uma nova mensagem de log que imprime informações da sessão após o login.
Correções de bugs¶
Corrigido um problema em que o método
DataFrame.show()
não exibia dados binários corretamente.Corrigido um erro que ocorria ao obter o número da versão.
Versão 0.6.0 (14 de junho de 2021)¶
Versão compatível do Snowflake: 5.21.x
Versão preliminar em AWS
A referência de API para esta versão está disponível em um arquivo .zip
ou .tar.gz
no Snowflake Client Repository.
Mudanças de API¶
Nesta versão, os seguintes métodos em RelationalGroupedDataFrame agora exigem um argumento:
avg (média)
max (máx.)
median (mediana)
min (mín.)
soma
Nas versões anteriores, se você chamasse esses métodos sem argumento, eles eram aplicados a todas as colunas numéricas no DataFrame. Por exemplo, para um DataFrame df
com as colunas (a int, b string, c float)
, chamar df.groupBy("a").max()
era equivalente a chamar df.groupBy("a").max(col("a"), col("c"))
.
Nesta versão, chamar esses métodos sem argumento resulta em SnowparkClientException
.
Versão 0.5.0¶
Novos recursos¶
Adicionado um parâmetro maxWidth ao método DataFrame.show(). Você pode usar este parâmetro para ajustar o número de caracteres impressos na saída de cada coluna.
Adicionado o método Session.cancelAll(), que você pode usar para cancelar todas as ações em execução nesta sessão.
Adicionado o método DataFrame.toLocalIterator(), que retorna um iterador que você pode usar para recuperar dados, linha por linha. Você pode usar isso em vez de DataFrame.collect(), se não quiser carregar todos os dados na memória de uma vez.
Adicionado o método median à classe RelationalGroupedDataFrame.
Melhorias¶
Melhorada a mensagem de erro retornada quando um identificador é inválido.
Melhorada a verificação de erros para relatar um erro quando nenhum nome de banco de dados ou esquema for especificado.
Adicionada uma melhoria de desempenho ao inserir um grande número de valores em uma tabela.
Atualizada a biblioteca para lidar consistentemente com identificadores de objetos Snowflake (nomes de tabelas e exibições). Agora, todos os parâmetros que especificam nomes de tabelas ou exibições suportam o uso de:
Nomes curtos (por exemplo, nome_da_tabela e nome_da_exibição)
Nomes totalmente qualificados (por exemplo, database.schema.table_name)
Identificadores de múltiplas partes (por exemplo, Seq(«database», «schema», «view_name»))
Adicionada uma verificação para verificar se a versão suportada do Scala está sendo usada. A biblioteca reportará erro se a versão Scala não for compatível.
Correções de bugs¶
Corrigido um problema ao registrar UDFs no Microsoft Windows.
Corrigido um problema com a ordem dos resultados ao usar DataFrame.sort() com DataFrame.limit().
Session.range() corrigido para gerar uma sequência de números sem lacunas.
Versão 0.4.1¶
Nesta versão, você não precisa mais especificar um esquema temporário ou banco de dados temporário para objetos Snowpark (as configurações TEMP_SCHEMA e TEMP_DB). A biblioteca Snowpark cria automaticamente versões temporárias dos objetos necessários.
Mudanças de API¶
Substituído o método DataFrame.cache() pelo método DataFrame.cacheResult().
O novo método cria e retorna um novo DataFrame com os resultados armazenados em cache e não tem efeito no DataFrame atual. Como resultado desta alteração, o objeto DataFrame agora é imutável.
Nova APIs¶
Adicionados os seguintes novos métodos à classe RelationalGroupedDataFrame:
avg (média)
max (máx.)
Adicionados os seguintes novos métodos à classe DataFrame:
groupByGroupingSets
clone
createOrReplaceTempView
Adicionadas as seguintes novas funções ao objeto de funções:
toScalar
Adicionado um objeto Session.file, que fornece os seguintes novos métodos para executar operações de arquivo:
get
put
Foram feitas as seguintes alterações no método Session.createDataFrame:
Adicionado suporte para esquemas fornecidos pelo usuário.
Adicionado suporte para especificar uma matriz/mapa de variante/dados de geografia.
Adicionado suporte para tipos de dados de geografia/variante em UDFs.
Métodos registerPermanent adicionados à classe UDFRegistration.
Correções de bugs¶
Corrigido um problema quando o nome da coluna DataFrame contém aspas.
Corrigido um problema com a incapacidade de escapar de dados que contêm barras invertidas, aspas simples e caracteres de nova linha.
Corrigido um problema em que a criação da UDF falhava com a mensagem de erro «código muito grande».
Corrigido um problema em que o fechamento da UDF falhava ao capturar o valor de uma variável da cadeia de caracteres local.
Adicionado o esquema de resultados para as seguintes cláusulas SQL:
GRANT/REVOKE
DESCRIBE
CREATE
USE
Corrigido um problema ao usar o Snowpark no Visual Studio Code com a extensão Metals para criar uma UDF.