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ânciaAsyncJob
a partir de uma ID de consulta.AsyncJob.result()
agora aceita o argumentoresult_type
para retornar os resultados em diferentes formatos.AsyncJob.to_df()
retorna umDataFrame
construído a partir do resultado deste trabalho assíncrono.AsyncJob.query()
retorna o texto SQL da consulta executada.
DataFrame.agg()
eRelationalGroupedDataFrame.agg()
agora aceitam argumentos de comprimento variável.Adicionados os parâmetros
lsuffix
ersuffix
aDataFrame.join()
eDataFrame.cross_join()
para renomear convenientemente as colunas sobrepostas.Adicionado
Table.drop_table()
para que você possa descartar a tabela de temporária depois de chamarDataFrame.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()
elast_value()
. (contribuição de @chasleslr)Adicionado on como um alias para
using_columns
e how como um alias parajoin_type
emDataFrame.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 paraDataFrame.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 umValueError
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çãoSnowparkSQLException
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()
parafunctions.call_builtin()
.functions.function()
parafunctions.builtin()
.DataFrame.order_by()
paraDataFrame.sort()
.DataFrame.orderBy()
paraDataFrame.sort()
.
DataFrame.cache_result()
aprimorado para devolver uma classeTable
mais precisa em vez de uma classe DataFrame.Adicionado suporte para permitir
session
como o primeiro argumento ao chamarStoredProcedure
.
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()
eDataFrame.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()
eTable.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()
eTable.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
emSession.write_pandas()
. Agora você pode escolher entre estas opções detable_type
:temporary
,temp
etransient
.Adicionado suporte ao uso de dados estruturados Python (
list
,tuple
edict
) como valores literais no Snowpark.Adicionado argumento da palavra-chave
execute_as
afunctions.sproc()
esession.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()
eDataFrameWriter.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
emSession.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 chamarregister()
ou@udf()
.Adicionado suporte para chamar funções de tabela de
DataFrame.select()
,DataFrame.with_column()
eDataFrame.with_columns()
que agora assumem parâmetros do tipotable_function.TableFunctionCall
para colunas.Adicionado o argumento da palavra-chave
overwrite
aosession.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
aodf.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()
eTableFunctionCall.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ódulosnowflake.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 comdicts
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
erandom_split
na classesnowflake.snowpark.Dateframe
.update
,delete
emerge
na classesnowflake.snowpark.Table
.save_as_table
ecopy_into_location
na classesnowflake.snowpark.DataFrameWriter
.approx_quantile
,statement_params
,cov
ecrosstab
na classesnowflake.snowpark.DataFrameStatFunctions
.register
eregister_from_file
na classesnowflake.snowpark.udf.UDFRegistration
.register
eregister_from_file
na classesnowflake.snowpark.udtf.UDTFRegistration
.register
eregister_from_file
na classesnowflake.snowpark.stored_procedure.StoredProcedureRegistration
.udf
,udtf
esproc
emsnowflake.snowpark.functions
.
Adicionado suporte para
Column
como um argumento de entrada parasession.call()
.Adição de suporte para
table_type
emdf.write.save_as_table()
. Agora você pode escolher entre estas opções detable_type
:temporary
,temp
etransient
.
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 eFalse
emNone
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()
eDataFrame.join_table_function()
atualizados para aceitar instânciasTableFunctionCall
.
Alterações interruptivas¶
Ao criar uma função com
functions.udf()
efunctions.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 emtypes.py
. A propriedade não utilizadatype_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()
eDataFrame.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.