Notas de versão da biblioteca Snowpark para Python de 2022

Este artigo contém as notas de versão do Snowpark Library for Python, 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 Python.

Versão 1.0.0 (01/11/2022)

Novos recursos

  • Foi adicionado Session.generator() para criar um novo DataFrame usando a função de tabela GENERATOR.

  • O parâmetro SECURE foi adicionado às funções que criam um UDF ou UDTF seguro.

Versão 0.12.0 (14/10/2022)

Novos recursos

  • Adicionados novos APIs para trabalho assíncrono:

    • Session.create_async_job() para criar uma instância AsyncJob a partir de uma ID de consulta.

    • AsyncJob.result() agora aceita o argumento result_type para retornar os resultados em diferentes formatos.

    • AsyncJob.to_df() retorna um DataFrame construído a partir do resultado deste trabalho assíncrono.

    • AsyncJob.query() retorna o texto SQL da consulta executada.

  • DataFrame.agg() e RelationalGroupedDataFrame.agg() agora aceitam argumentos de comprimento variável.

  • Adicionados os parâmetros lsuffix e rsuffix a DataFrame.join() e DataFrame.cross_join() para renomear convenientemente as colunas sobrepostas.

  • Adicionado Table.drop_table() para que você possa descartar a tabela de temporária depois de chamar DataFrame.cache_result(). Table é também um gerenciador de contexto, assim você pode usar com a instrução para descartar a tabela temporária do cache após o uso.

  • Session.use_secondary_roles() adicionado.

  • Funções adicionadas first_value() e last_value(). (contribuição de @chasleslr)

  • Adicionado on como um alias para using_columns e how como um alias para join_type em DataFrame.join().

Correções de bugs

  • Corrigido um bug em Session.create_dataframe() que gerava um erro quando nomes de esquema tinham caracteres especiais.

  • Corrigido um bug no qual as opções definidas em Session.read.option() não eram passadas para DataFrame.copy_into_table() como valores padrão.

  • Corrigido um bug no qual DataFrame.copy_into_table() gerava um erro quando uma opção de cópia tinha aspas simples no valor.

Versão 0.11.0 (28/09/2022)

Mudanças de comportamento

  • Session.add_packages() agora gera um ValueError quando a versão de um pacote não pode ser encontrada no canal Snowflake Anaconda. Anteriormente, Session.add_packages() teve sucesso e uma exceção SnowparkSQLException foi gerada mais tarde na etapa de registro de UDF ou do procedimento armazenado.

Novos recursos

  • Adicionado o método FileOperation.get_stream() para oferecer suporte ao download de arquivos de estágio como um fluxo.

  • Adicionado suporte em functions.ntiles() para aceitar um argumento int.

  • Os seguintes aliases foram adicionados:

    • functions.call_function() para functions.call_builtin().

    • functions.function() para functions.builtin().

    • DataFrame.order_by() para DataFrame.sort().

    • DataFrame.orderBy() para DataFrame.sort().

  • DataFrame.cache_result() aprimorado para devolver uma classe Table mais precisa em vez de uma classe DataFrame.

  • Adicionado suporte para permitir session como o primeiro argumento ao chamar StoredProcedure.

Melhorias

  • Melhoria da geração de consultas aninhadas por meio do nivelamento de consultas, quando aplicável. Esta melhoria pode ser ativada com a configuração Session.sql_simplifier_enabled = True. DataFrame.select(), DataFrame.with_column(), DataFrame.drop() e outros APIs relacionados a seleções têm SQL mais nivelado agora. DataFrame.union(), DataFrame.union_all(), DataFrame.except_(), DataFrame.intersect() e DataFrame.union_by_name() nivelaram o SQL gerado quando vários operadores do conjunto forem encadeados.

  • Anotações de tipo melhoradas para APIs de trabalho assimétrico.

Correções de bugs

  • Corrigido um bug no qual Table.update(), Table.delete() e Table.merge() tentava fazer referência a uma tabela temporária que não existia.

Versão 0.10.0 (16/09/2022)

Novos recursos

  • Adicionados APIs experimentais para avaliar os dataframes do Snowpark com consultas assíncronas:

    • Adicionado o bloco de argumento da palavra-chave às seguintes APIs de ação nos dataframes do Snowpark (que executam consultas) para permitir avaliações assíncronas:

      • DataFrame.collect(), DataFrame.to_local_iterator(), DataFrame.to_pandas(), DataFrame.to_pandas_batches(), DataFrame.count(), DataFrame.first(), DataFrameWriter.save_as_table(), DataFrameWriter.copy_into_location(), Table.delete(), Table.update() e Table.merge().

    • Método adicionado DataFrame.collect_nowait() para permitir avaliações assíncronas.

    • Adicionada a classe AsyncJob para recuperar resultados de consultas executadas de forma assíncrona e verificar seu status.

  • Adição de suporte para table_type em Session.write_pandas(). Agora você pode escolher entre estas opções de table_type: temporary, temp e transient.

  • Adicionado suporte ao uso de dados estruturados Python (list, tuple e dict) como valores literais no Snowpark.

  • Adicionado argumento da palavra-chave execute_as a functions.sproc() e session.sproc.register() para permitir o registro de um procedimento armazenado como chamador ou proprietário.

  • Adicionado suporte para especificar um formato de arquivo pré-configurado ao ler arquivos de um estágio no Snowflake.

Melhorias

  • Adicionado suporte para exibição de detalhes de uma sessão do Snowpark.

Correções de bugs

  • Foi corrigido um bug no qual DataFrame.copy_into_table() e DataFrameWriter.save_as_table() criavam erroneamente uma nova tabela se o nome da tabela fosse totalmente qualificado, e a tabela já existisse.

Preterições

  • Argumento de palavra-chave obsoleto create_temp_table em Session.write_pandas().

  • Invocação de UDFs usando argumentos em uma lista Python ou tupla obsoleta. Você pode usar argumentos de comprimento variável sem uma lista ou uma tupla.

Atualizações de dependências

  • snowflake-connector-python atualizado para 2.7.12.

Versão 0.9.0 (30/08/2022)

Novos recursos

  • Adicionado suporte para exibição do código fonte como comentários nos scripts gerados ao registrar UDFs. Este recurso é ativado por padrão. Para desativá-lo, passe o novo argumento da palavra-chave source_code_display como Falso ao chamar register() ou @udf().

  • Adicionado suporte para chamar funções de tabela de DataFrame.select(), DataFrame.with_column() e DataFrame.with_columns() que agora assumem parâmetros do tipo table_function.TableFunctionCall para colunas.

  • Adicionado o argumento da palavra-chave overwrite ao session.write_pandas() para permitir que você substitua o conteúdo de uma tabela do Snowflake por um de Pandas DataFrame.

  • Adicionado o argumento da palavra-chave column_order ao df.write.save_as_table() para especificar as regras de correspondência ao inserir dados em uma tabela no modo de anexo.

  • Adicionado o método FileOperation.put_stream() para carregar arquivos locais em um estágio por meio de um fluxo de arquivos.

  • Adicionados os métodos TableFunctionCall.alias() e TableFunctionCall.as_() para permitir o aliasing dos nomes das colunas que vêm da saída das junções de funções de tabela.

  • Função adicionada get_active_session() no módulo snowflake.snowpark.context para obter a atual sessão ativa do Snowpark.

Melhorias

Melhorada a função function.uniform() para inferir os tipos de entradas max_ e min_ e converter os limites em IntegerType ou FloatType, respectivamente.

Correções de bugs

  • Corrigido um bug no qual a inserção de lote não deveria gerar um erro quando statement_params não é passado para a função.

  • Corrigido um bug no qual os nomes das colunas devem ficar entre aspas quando session.create_dataframe() é chamado com dicts e um determinado esquema.

  • Corrigido um bug no qual a criação de uma tabela deve ser pulada se a tabela já existir e estiver em modo de anexo ao chamar df.write.save_as_table().

  • Corrigido um bug no qual pacotes de terceiros com sublinhados não podem ser adicionados ao registrar UDFs.

Versão 0.8.0 (22/07/2022)

Novos recursos

  • Adicionado argumento somente palavra-chave statement_params aos seguintes métodos para permitir a especificação de parâmetros de nível de instrução:

    • collect, to_local_iterator, to_pandas, to_pandas_batches, count, copy_into_table, show, create_or_replace_view, create_or_replace_temp_view, first, cache_result e random_split na classe snowflake.snowpark.Dateframe.

    • update, delete e merge na classe snowflake.snowpark.Table.

    • save_as_table e copy_into_location na classe snowflake.snowpark.DataFrameWriter.

    • approx_quantile, statement_params, cov e crosstab na classe snowflake.snowpark.DataFrameStatFunctions.

    • register e register_from_file na classe snowflake.snowpark.udf.UDFRegistration.

    • register e register_from_file na classe snowflake.snowpark.udtf.UDTFRegistration.

    • register e register_from_file na classe snowflake.snowpark.stored_procedure.StoredProcedureRegistration.

    • udf, udtf e sproc em snowflake.snowpark.functions.

  • Adicionado suporte para Column como um argumento de entrada para session.call().

  • Adição de suporte para table_type em df.write.save_as_table(). Agora você pode escolher entre estas opções de table_type: temporary, temp e transient.

Melhorias

  • Adicionada validação do nome do objeto nos métodos session.use_*.

  • Atualizada a tag query em SQL para escapar dela quando ela contém caracteres especiais.

  • Adicionada uma verificação para ver se os termos do Anaconda são confirmados ao adicionar pacotes em falta.

Correções de bugs

  • Corrigido o comprimento limitado da coluna da cadeia de caracteres em session.create_dataframe().

  • Corrigido um erro no qual session.create_dataframe() convertia erroneamente 0 e False em None quando os dados de entrada eram apenas uma lista.

  • Corrigido um bug no qual a chamada session.create_dataframe() utilizando um grande conjunto de dados local às vezes criava uma tabela temporária duas vezes.

  • Alinhada a definição de function.trim() com a definição da função SQL.

  • Corrigido um problema onde o snowpark-python ficava suspenso ao usar a soma (função interna) definida pelo sistema Python vs. function.sum() do Snowpark.

Versão 0.7.0 (25/05/2022)

Novos recursos

  • Suporte adicionado para funções de tabela definidas pelo usuário (UDTFs).

    • Use a função snowflake.snowpark.functions.udtf() para registrar uma UDTF, ou use-a como decorador para registrar a UDTF.

    • Você também pode usar Session.udtf.register() para registrar uma UDTF.

    • Use Session.udtf.register_from_file() para registrar uma UDTF de um arquivo Python.

  • APIs atualizadas para consultar uma função de tabela, incluindo tanto funções de tabela incluídas com o Snowflake e UDTFs.

    • Use a função snowflake.snowpark.functions.table_function() para criar um objeto que pode ser chamado representando uma função de tabela e use-o para chamar a função de tabela em uma consulta.

    • Alternativamente, use a função snowflake.snowpark.functions.call_table_function() para chamar uma função de tabela.

    • Suporte adicionado para a cláusula over, que especifica a partition by e order by ao unir lateralmente uma função de tabela.

    • Session.table_function() e DataFrame.join_table_function() atualizados para aceitar instâncias TableFunctionCall.

Alterações interruptivas

  • Ao criar uma função com functions.udf() e functions.sproc(), agora você pode especificar uma lista vazia para o argumento importações ou pacotes para indicar que nenhuma importação ou pacote é usado para essa UDF ou procedimento armazenado. Anteriormente, a especificação de uma lista vazia significava que a função utilizaria importações ou pacotes em nível de sessão.

  • Implementação melhorada do __repr__ de tipos de dados em types.py. A propriedade não utilizada type_name foi removida.

  • Classe de exceção específica do Snowpark adicionada para erros de SQL. Isso substitui o anterior ProgrammingError do conector de Python.

Melhorias

  • Bloqueio adicionado a uma UDF ou UDTF quando ela é chamado pela primeira vez por thread.

  • Mensagem de erro melhorada para erros de pickling que ocorreram durante a criação da UDF.

  • Consulta de ID incluída ao registrar a consulta falhada.

Correções de bugs

  • Corrigido um bug no qual dados não integrais (como carimbos de data/hora) eram ocasionalmente convertidos a integers ao chamar DataFrame.to_pandas().

  • Corrigido um bug no qual DataFrameReader.parquet() não conseguia ler um arquivo de parquet quando sua coluna continha espaços.

  • Corrigido um bug no qual DataFrame.copy_into_table() falhava quando o dataframe era criado lendo um arquivo com esquemas inferidos.

Preterições

  • Session.flatten() e DataFrame.flatten().

Atualizações de dependências

  • Versão restrita do cloudpickle <= 2.0.0.

Versão 0.6.0 (27/04/2022)

Novos recursos

  • Suporte adicionado para as UDFs vetorizadas via API de lote de UDF de Python. A API de lote de UDF de Python permite definir funções de Python que recebem lotes de linhas de entrada como DataFrames do Pandas e retornam lotes de resultados como Arrays ou Series do Pandas. Isso pode melhorar o desempenho de UDFs no Snowpark.

  • Suporte adicionado para inferir o esquema de um DataFrame por padrão quando ele é criado lendo um arquivo Parquet, Avro ou ORC no estágio.

  • Adicionadas as funções current_session(), current_statement(), current_user(), current_version(), current_warehouse(), date_from_parts(), date_trunc(), dayname(), dayofmonth(), dayofweek(), dayofyear(), grouping(), grouping_id(), hour(), last_day(), minute(), next_day(), previous_day(), second(), month(), monthname(), quarter(), year(), current_database(), current_role(), current_schema(), current_schemas(), current_region(), current_avaliable_roles(), add_months(), any_value(), bitnot(), bitshiftleft(), bitshiftright(), convert_timezone(), uniform(), strtok_to_array(), sysdate(), time_from_parts(), timestamp_from_parts(), timestamp_ltz_from_parts(), timestamp_ntz_from_parts(), timestamp_tz_from_parts(), weekofyear(), percentile_cont() para snowflake.snowflake.functions.

Melhorias

  • Suporte adicionado para a criação de um DataFrame vazio com um esquema específico usando o método Session.create_dataframe().

  • Nível de registro em log alterado de INFO para DEBUG para vários registros (por exemplo, a consulta executada) ao avaliar um dataframe.

  • Mensagem de erro melhorada quando uma UDF não é criada devido a erros de pickling.

  • Foram removidos as seguintes APIs que estavam obsoletas em 0.4.0: DataFrame.groupByGroupingSets(), DataFrame.naturalJoin(), DataFrame.joinTableFunction, DataFrame.withColumns(), Session.getImports(), Session.addImport(), Session.removeImport(), Session.clearImports(), Session.getSessionStage(), Session.getDefaultDatabase(), Session.getDefaultSchema(), Session.getCurrentDatabase(), Session.getCurrentSchema(), Session.getFullyQualifiedCurrentSchema().

  • Adicionada extensão de digitação como uma nova dependência com a versão >= 4.1.0.

Correções de bugs

  • Dependências rígidas do Pandas removidas no método Session.create_dataframe().

Versão 0.5.0 (22/03/2022)

Novos recursos

  • Adicionada API de procedimentos armazenados.

  • Adicionada as propriedades Session.sproc property e sproc() para snowflake.snowpark.functions, para que você possa registrar procedimentos armazenados.

  • Adicionado Session.call para chamar procedimentos armazenados pelo nome.

  • Adicionado UDFRegistration.register_from_file() para permitir o registro de UDFs diretamente de arquivos fonte de Python ou arquivos zip.

  • Adicionado UDFRegistration.describe() para descrever uma UDF.

  • Adicionado DataFrame.random_split() para fornecer uma forma de dividir aleatoriamente um dataframe.

  • Funções adicionadas md5(), sha1(), sha2(), ascii(), initcap(), length(), lower(), lpad(), ltrim(), rpad(), rtrim(), repeat(), soundex(), regexp_count(), replace(), charindex(), collate(), collation(), insert(), left(), right(), endswith() para snowflake.snowpark.functions.

  • A função call_udf() agora também aceita valores literais.

  • Forneceu uma palavra-chave distinta em array_agg().

Correções de bugs

  • Correção de um problema que fazia com que DataFrame.to_pandas() tivesse uma coluna de cadeia de caracteres se Column.cast(IntegerType()) fosse usado.

  • Correção de um bug em DataFrame.describe() quando há mais de uma coluna de cadeia de caracteres.

Versão 0.4.0 (15/02/2022)

Novos recursos

  • Agora você pode especificar quais pacotes do Anaconda usar ao definir UDFs.

  • Adicionados add_packages(), get_packages(), clear_packages() e remove_package() à classe Session.

  • Adicionado add_requirements() a Session para que você possa usar um arquivo de requisitos para especificar quais pacotes essa sessão irá usar.

  • Adicionados pacotes de parâmetro à função snowflake.snowpark.functions.udf() e ao método UserDefinedFunction.register() para indicar dependências no nível da UDF no pacote do Anaconda ao criar uma UDF.

  • Adicionadas importações de parâmetros ao snowflake.snowpark.functions.udf() e UserDefinedFunction.register() para especificar importações de código no nível da UDF.

  • Adicionado uma sessão de parâmetro à função udf() e UserDefinedFunction.register() para que você possa especificar qual sessão usar para criar uma UDF se você tiver várias sessões.

  • Tipos Variante e Geografia adicionados ao snowflake.snowpark.types para serem usados como dicas de tipo para dados de Geografia e Variantes ao definir uma UDF.

  • Suporte adicionado para dados de Geografia geoJSON.

  • Tabela adicionada, uma subclasse do DataFrame para operações de tabela.

  • Os métodos atualizar e excluir atualizam e excluem linhas de uma tabela no Snowflake.

  • O método mesclar funde dados de um DataFrame a uma tabela.

  • Método DataFrame.sample() substituído por um parâmetro adicional semente que funciona em tabelas, mas não em exibições e subconsultas.

  • DataFrame.to_local_iterator() e DataFrame.to_pandas_batches() adicionados para permitir obter resultados de um iterador quando o conjunto de resultados retornado do banco de dados do Snowflake for muito grande.

  • DataFrame.cache_result() adicionado para caching das operações realizadas em um DataFrame em uma tabela temporária. As operações subsequentes no DataFrame original não têm efeito sobre o resultado no DataFrame de resultado em cache.

  • Propriedade DataFrame.queries adicionada para obter consultas SQL que serão executadas para avaliar o DataFrame.

  • Session.query_history() adicionado como um gerente de contexto para rastrear consultas SQL executadas em uma sessão, incluindo todas as consultas SQL para avaliar DataFrames criados de uma sessão. Tanto a ID de consulta como o texto da consulta são registrados.

  • Agora você pode criar uma instância de Session a partir de uma instância de snowflake.connector.SnowflakeConnection já estabelecida. Use a conexão de parâmetro em Session.builder.configs().

  • use_database(), use_schema(), use_warehouse() e use_role() adicionados à classe Session para trocar de banco de dados/esquema/warehouse/função depois que uma sessão for criada.

  • DataFrameWriter.copy_into_table() adicionado para descarregar um DataFrame para arquivos em estágio.

  • DataFrame.unpivot() adicionado.

  • Column.within_group() adicionado para ordenar as linhas por colunas com algumas funções de agregação.

  • Funções adicionadas listagg(), mode(), div0(), acos(), asin(), atan(), atan2(), cos(), cosh(), sin(), sinh(), tan(), tanh(), degrees(), radians(), round(), trunc() e factorial() ao snowflake.snowpark.functions.

  • Adicionado um argumento opcional ignore_nulls nas funções lead() e lag().

  • O parâmetro de condição da função when() e iff() agora aceita expressões SQL.

Melhorias

  • Todos os nomes de funções e métodos foram renomeados para usar a nomenclatura snake case, que é mais comum em Python. Por conveniência, alguns nomes em camel case são mantidos como alias para APIs em snake case. Recomenda-se usar as APIs em snake case.

  • Esses métodos foram preteridos na classe Session e substituídos por seus equivalentes em snake case: getImports(), addImports(), removeImport(), clearImports(), getSessionStage(), getDefaultSchema(), getDefaultSchema(), getCurrentDatabase() e getFullyQualifiedCurrentSchema().

  • Esses métodos foram preteridos na classe DataFrame e substituídos por seus equivalentes em snake case: groupingByGroupingSets(), naturalJoin(), withColumns() e joinTableFunction().

  • A propriedade DataFrame.columns agora é consistente com DataFrame.schema.names e com os requisitos de identificadores de bancos de dados do Snowflake.

  • Column.__bool__() agora gera um TypeError. Isso proibirá o uso de operadores lógicos e/ou não no objeto Coluna. Por exemplo, col(«a») > 1 e col(«b») > 2 gerarão um TypeError. Use (col(«a») > 1) & (col(«b») > 2) em vez disso.

  • PutResult e GetResult alterados para a subclasse NamedTuple.

  • Correção de um bug quando o caminho local ou o local do estágio tem um espaço ou outros caracteres especiais.

  • DataFrame.describe() alterado para que colunas que não sejam numéricas e não sejam cadeias de caracteres sejam ignoradas em vez de gerar uma exceção.

Atualizações de dependências

  • snowflake-connector-python atualizado para 2.7.4.

Versão 0.3.0 (09/01/2022)

Novos recursos

  • Column.isin() adicionada com um alias Column.in_().

  • Column.try_cast() adicionado, que é uma versão especial de cast(). Ele tenta converter uma expressão de cadeia de caracteres para outros tipos e retorna nulo se a conversão não for possível.

  • Column.startswith() e Column.substr() adicionados para processar colunas da cadeia de caracteres.

  • Column.cast() agora também aceita um valor str para indicar o tipo de conversão, além de uma instância DataType.

  • DataFrame.describe() adicionado para resumir as estatísticas de um DataFrame.

  • DataFrame.explain() adicionado para imprimir o plano de consulta de um DataFrame.

  • DataFrame.filter() e DataFrame.select_expr() agora aceitam uma expressão SQL.

  • Adicionado um novo parâmetro bool chamado create_temp_table aos métodos DataFrame.saveAsTable() e Session.write_pandas() para criar opcionalmente uma tabela temporária.

  • DataFrame.minus() e DataFrame.subtract() adicionados como aliases para DataFrame.except_().

  • regexp_replace(), concat(), concat_ws(), to_char(), current_timestamp(), current_date(), current_time(), months_between(), cast(), try_cast(), greatest(), least() e hash() adicionados ao módulo snowflake.snowpark.functions.

Correções de bugs

  • Correção de um problema no qual Session.createDataFrame(pandas_df) e Session.write_pandas(pandas_df) geravam uma exceção quando DataFrame do Pandas tinham espaços no nome da coluna.

  • Correção de um problema no qual DataFrame.copy_into_table() às vezes imprimia erroneamente uma entrada de registro no nível de um erro.

  • Correção de um problema de documentação de API no qual algumas APIs de DataFrame estavam faltando na documentação.

Atualizações de dependências

  • snowflake-connector-python atualizado para 2.7.2, que atualiza a dependência pyarrow para 6.0.x. Consulte as notas de lançamento do conector Python 2.7.2 para obter mais informações.

Versão 0.2.0 (02/12/2021)

Novos recursos

  • Método createDataFrame() adicionado para criar um DataFrame a partir de um DataFrame do Pandas.

  • Método write_pandas() adicionado para escrever um DataFrame do Pandas em uma tabela no Snowflake e obter um objeto DataFrame do Snowpark de volta.

  • Novas classes e métodos adicionados para chamar funções de janela.

  • Novas funções adicionadas cume_dist() para encontrar a distribuição cumulativa de um valor em relação a outros valores dentro de uma partição de janela, e row_number(), que retorna um número de linha único para cada linha dentro de uma partição de janela.

  • Adição de funções para computar estatísticas para DataFrames na classe DataFrameStatFunctions.

  • Adição de funções para lidar com valores em falta em um DataFrame na classe DataFrameNaFunctions.

  • Adição dos novos métodos: rollup(), cube() e pivot() à classe DataFrame.

  • Adição da classe GroupingSets, que você pode usar com o método DataFrame groupByGroupingSets para executar um SQL GROUP BY GROUPING SETS.

  • Adição da nova classe FileOperation(sessão), que você pode usar para carregar e baixar arquivos de e para um estágio.

  • Adição do método copy_into_table() para carregar dados de arquivos em um estágio para uma tabela.

  • Em expressões CASE, as funções when e otherwise agora aceitam tipos de Python além de objetos de coluna.

  • Quando você registrar uma UDF, agora você pode opcionalmente definir o parâmetro de substituição como verdadeiro para substituir uma UDF existente com o mesmo nome.

Melhorias

  • UDFs são agora compactadas antes de serem carregadas no servidor. Isso as torna cerca de 10 vezes menores, o que pode ajudar quando você estiver usando grandes arquivos de modelos de ML.

  • Quando o tamanho de uma UDF for menor que 8196 bytes, ela será carregada como código inline em vez de ser carregada para um estágio.

Correções de bugs

  • Corrigido um problema em que a instrução df.select(when(col(«a») == 1, 4).otherwise(col(«a»))), [Row(4), Row(2), Row(3)] gerou uma exceção.

  • Corrigido um problema no qual df.toPandas() gerava uma exceção quando um DataFrame era criado a partir de grandes quantidades de dados locais.