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

  • Adicionado suporte para gravar DataFrames em arquivos em um estágio para a API Scala e a API Java.

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 e jackson-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 e jackson-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ório lib/ (jackson-core-2.13.2.jar, jackson-databind-2.13.2.2.jar e jackson-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 que DataFrameWriter 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 e Map 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

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 como artifactId.

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

  • Adicionada a função listagg ao objeto functions.

  • Adicionado suporte para UDFs com argumentos 11 a 22.

  • Adicionada a função any_value à classe RelationalGroupedDataFrame.

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

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

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

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 objeto Updatable, que estende o DataFrame.

  • 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.