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

  • cache

  • coalesce

  • collect

  • count

  • crossJoin

  • dropDuplicates

  • drop_duplicates

  • dropna

  • fillna

  • first

  • head

  • isEmpty

  • join

  • limit

  • melt

  • offset

  • persist

  • repartitionByRange

  • replace

  • select

  • show

  • tail

  • take

  • toDF

  • toLocalIterator

  • toPandas

  • unionAll

  • unpersist

  • unpivot

  • where

  • withColumnsRenamed

  • toLocalIterator

  • toPandas

  • unionAll

  • unpersist

  • unpivot

  • where

  • withColumnsRenamed

APIs com alta compatibilidade

  • agg

  • colRegex

  • corr

  • cov

  • crosstab

  • cube

  • describe

  • distinct

  • drop

  • exceptAll

  • groupBy

  • groupby

  • intersect

  • intersectAll

  • isLocal

  • mapInPandas

  • orderBy

  • rollup

  • sort

  • union

  • unionByName

  • withColumn

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

  • alias

  • approxQuantile

  • createGlobalTempView

  • createOrReplaceGlobalTempView

  • createOrReplaceTempView

  • createTempView

  • explain

  • filter

  • freqItems

  • hint

  • inputFiles

  • printSchema

  • randomSplit

  • repartition

  • sameSemantics

  • sample

  • sampleBy

  • selectExpr

  • semanticHash

  • sortWithinPartitions

  • subtract

  • summary

  • transform

  • withColumns

  • withMetadata

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

  • checkSameSparkSession

  • dropDuplicatesWithinWatermark

  • observe

  • pandas_api

  • registerTempTable

  • to_pandas_on_spark

  • withWatermark

APIs de coluna

Cobertura para operações de coluna.

APIs com compatibilidade total

  • asc

  • between

  • contains

  • desc

  • eqNullSafe

  • getItem

  • isNull

  • isin

  • like

  • otherwise

  • startswith

  • substr

  • when

APIs com alta compatibilidade

  • alias

  • asc_nulls_first

  • asc_nulls_last

  • astype

  • bitwiseAND

  • bitwiseOR

  • bitwiseXOR

  • cast

  • desc_nulls_first

  • desc_nulls_last

  • endswith

  • isNotNull

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

  • dropFields

  • ilike

  • over

  • rlike

  • withField

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

  • range

  • sql

  • table

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

  • addArtifact

  • addArtifacts

  • addTag

  • clearTags

  • getTags

  • interruptAll

  • interruptOperation

  • interruptTag

  • removeTag

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

  • copyFromLocalToFs

  • stop

GroupedData APIs

APIs com compatibilidade total

  • agg

  • mean

  • pivot

APIs com alta compatibilidade

  • agg

  • mean

  • pivot

APIs com compatibilidade parcial

  • apply

  • avg

  • sum

APIs não compatíveis

  • applyInPandasWithState

  • cogroup

DataFrameReader APIs

APIs com compatibilidade total

  • table

APIs com alta compatibilidade

  • csv

APIs com compatibilidade parcial

  • json

  • load

  • parquet

  • jdbc

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

  • mode

  • saveAsTable

  • text

APIs com compatibilidade parcial

  • csv

  • json

  • options

  • parquet

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

  • bucketBy

  • insertInto

  • jdbc

  • orc

  • sortBy

DataFrameWriterV2 APIs

Cobertura para a nova DataFrameWriterV2 API.

APIs com compatibilidade total

  • replace

APIs com compatibilidade parcial

  • append

  • create

  • createOrReplace

  • option

  • options

  • partitionedBy

  • tableProperty

  • using

APIs de catálogo

APIs com compatibilidade total

  • cacheTable

  • clearCache

  • dropGlobalTempView

  • dropTempView

  • isCached

  • refreshByPath

  • refreshTable

  • uncacheTable

APIs com alta compatibilidade

  • currentCatalog

  • listCatalogs

  • listColumns

  • recoverPartitions

  • setCurrentCatalog

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

  • createExternalTable

  • createTable

  • functionExists

  • getFunction

  • listFunctions

  • registerFunction

APIs de janela e WindowSpec

Cobertura para funções de janela.

APIs de janela (todas D0)

  • partitionBy

  • orderBy

  • rangeBetween

  • rowsBetween

  • unboundedPreceding

  • unboundedFollowing

  • currentRow

APIs de WindowSpec(todas D0)

  • partitionBy

  • orderBy

  • rangeBetween

  • rowsBetween