APIs PySpark compatível para Snowpark Connect for Spark¶
O Snowpark Connect for Spark é compatível com APIs PySpark conforme descrito neste tópico.
O Snowpark Connect for Spark oferece compatibilidade com a Spark Connect 3.5.3 API do PySpark, permitindo que você execute cargas de trabalho do Spark no Snowflake. A compatibilidade com o Snowpark Connect for Spark é definida pelo comportamento de execução ao executar um aplicativo Spark que usa a Spark Connect 3.5.3 API do Pyspark. Este guia detalha quais APIs são compatíveis e os níveis de compatibilidade.
Definições do nível de compatibilidade¶
- APIs com compatibilidade total
As APIs com compatibilidade total se comportam de forma idêntica ao PySpark nativo. Você pode usar essas APIs com a confiança de que os resultados corresponderão exatamente.
- APIs com alta compatibilidade
As APIs com alta compatibilidade funcionam corretamente, mas podem ter pequenas diferenças:
A formatação da mensagem de erro pode ser diferente.
O formato de exibição da saída pode variar (como precisão decimal e maiúsculas e minúsculas nos nomes das colunas).
Casos extremos podem produzir resultados ligeiramente diferentes.
- APIs com compatibilidade parcial
As APIs com compatibilidade parcial são funcionais, mas têm limitações notáveis:
Apenas um subconjunto da funcionalidade pode estar disponível.
O comportamento pode diferir do PySpark em cenários específicos.
Configurações adicionais podem ser necessárias.
As características de desempenho podem ser diferentes.
- APIs não compatíveis
APIs que não estão implementadas atualmente ou não são compatíveis com o Snowflake.
DataFrame APIs¶
A cobertura da DataFrame API principal.
APIs com compatibilidade total¶
cachecoalescecollectcountcrossJoindropDuplicatesdrop_duplicatesdropnafillnafirstheadisEmptyjoinlimitmeltoffsetpersistrepartitionByRangereplaceselectshowtailtaketoDFtoLocalIteratortoPandasunionAllunpersistunpivotwherewithColumnsRenamedtoLocalIteratortoPandasunionAllunpersistunpivotwherewithColumnsRenamed
APIs com alta compatibilidade¶
aggcolRegexcorrcovcrosstabcubedescribedistinctdropexceptAllgroupBygroupbyintersectintersectAllisLocalmapInPandasorderByrollupsortunionunionByNamewithColumn
Notas¶
orderBy/sort: a ordenação das colunas é inferida a partir do último DataFrame na cadeia.union/unionByName: o comportamento de ampliação de tipo pode ser ligeiramente diferente.describe: o formato de saída estatística pode variar.
APIs com compatibilidade parcial¶
aliasapproxQuantilecreateGlobalTempViewcreateOrReplaceGlobalTempViewcreateOrReplaceTempViewcreateTempViewexplainfilterfreqItemshintinputFilesprintSchemarandomSplitrepartitionsameSemanticssamplesampleByselectExprsemanticHashsortWithinPartitionssubtractsummarytransformwithColumnswithMetadata
Notas¶
explain: o formato do plano de consulta difere do Spark.repartition: a contagem de partições pode não ser exata.sample: a implementação da amostragem aleatória é diferente.createTempView: o ciclo de vida da exibição pode ser diferente.
APIs não compatíveis¶
checkSameSparkSessiondropDuplicatesWithinWatermarkobservepandas_apiregisterTempTableto_pandas_on_sparkwithWatermark
APIs de coluna¶
Cobertura para operações de coluna.
APIs com compatibilidade total¶
ascbetweencontainsdesceqNullSafegetItemisNullisinlikeotherwisestartswithsubstrwhen
APIs com alta compatibilidade¶
aliasasc_nulls_firstasc_nulls_lastastypebitwiseANDbitwiseORbitwiseXORcastdesc_nulls_firstdesc_nulls_lastendswithisNotNull
Notas¶
cast: algumas conversões inválidas retornam NULL no Spark, mas geram erro no Snowpark.alias: o formato de exibição do campo de estrutura pode ser diferente.
APIs com compatibilidade parcial¶
dropFieldsilikeoverrlikewithField
Notas¶
over: as especificações do quadro da janela podem ter diferenças sutis.rlike: a sintaxe de regex segue as convenções do Snowflake.
SparkSession APIs¶
APIs com compatibilidade total¶
rangesqltable
APIs com alta compatibilidade¶
createDataFrame
Notas¶
A inferência de esquema pode produzir tipos diferentes (como NUMBER(38,0) em comparação com LONG).
APIs com compatibilidade parcial¶
addArtifactaddArtifactsaddTagclearTagsgetTagsinterruptAllinterruptOperationinterruptTagremoveTag
Notas¶
As tags são mapeadas para tags de consulta do Snowflake.
As operações de interrupção usam IDs de consulta Snowflake em vez de IDs de operação.
APIs não compatíveis¶
copyFromLocalToFsstop
GroupedData APIs¶
APIs com compatibilidade total¶
aggmeanpivot
APIs com alta compatibilidade¶
aggmeanpivot
APIs com compatibilidade parcial¶
applyavgsum
APIs não compatíveis¶
applyInPandasWithStatecogroup
DataFrameReader APIs¶
APIs com compatibilidade total¶
table
APIs com alta compatibilidade¶
csv
APIs com compatibilidade parcial¶
jsonloadparquetjdbc
Notas¶
Os caminhos de arquivo usam áreas de preparação do Snowflake ou armazenamento em nuvem (S3, GCS, Azure).
A inferência de esquema pode ser diferente daquela do Spark nativo.
Algumas opções específicas de formato podem não ser compatíveis.
APIs não compatíveis¶
orc
DataFrameWriter APIs¶
APIs com compatibilidade total¶
modesaveAsTabletext
APIs com compatibilidade parcial¶
csvjsonoptionsparquet
Notas¶
As gravações são feitas em áreas de preparação do Snowflake ou armazenamento em nuvem.
O comportamento de particionamento pode ser diferente.
APIs não compatíveis¶
bucketByinsertIntojdbcorcsortBy
DataFrameWriterV2 APIs¶
Cobertura para a nova DataFrameWriterV2 API.
APIs com compatibilidade total¶
replace
APIs com compatibilidade parcial¶
appendcreatecreateOrReplaceoptionoptionspartitionedBytablePropertyusing
APIs de catálogo¶
APIs com compatibilidade total¶
cacheTableclearCachedropGlobalTempViewdropTempViewisCachedrefreshByPathrefreshTableuncacheTable
APIs com alta compatibilidade¶
currentCataloglistCatalogslistColumnsrecoverPartitionssetCurrentCatalog
Notas¶
listColumns: os nomes das colunas são em maiúsculas e os tipos são específicos do Snowflake.As mensagens de erro podem ter formatos diferentes.
APIs não compatíveis¶
createExternalTablecreateTablefunctionExistsgetFunctionlistFunctionsregisterFunction
APIs de janela e WindowSpec¶
Cobertura para funções de janela.
APIs de janela (todas D0)¶
partitionByorderByrangeBetweenrowsBetweenunboundedPrecedingunboundedFollowingcurrentRow
APIs de WindowSpec(todas D0)¶
partitionByorderByrangeBetweenrowsBetween