APIs PySpark prises en charge pour Snowpark Connect for Spark

Snowpark Connect for Spark prend en charge les APIs PySpark comme décrit dans cette rubrique.

Snowpark Connect for Spark offre une compatibilité avec l’API Spark Connect 3.5.3 de PySpark, vous permettant d’exécuter des charges de travail Spark sur Snowflake. La compatibilité Snowpark Connect for Spark est définie par son comportement d’exécution lors de l’exécution d’une application Spark qui utilise l’API Spark Connect 3.5.3 de Pyspark. Ce guide détaille quelles APIs sont prises en charge et leurs niveaux de compatibilité.

Définitions des niveaux de compatibilité

APIs entièrement compatibles

Les APIs disposant d’une compatibilité intégrale se comportent de la même manière que PySpark natif. Vous pouvez utiliser ces APIs en toute confiance, les résultats seront parfaitement identiques.

APIs hautement compatibles

Les APIs dotées d’une haute compatibilité fonctionnent correctement, mais peuvent présenter des différences mineures :

  • Le formatage des messages d’erreur peut différer.

  • Le format d’affichage de la sortie peut varier (comme la précision décimale, la casse des noms de colonnes).

  • Les cas limites peuvent produire des résultats légèrement différents.

APIs à compatibilité partielle

Les APIs dotées d’une compatibilité partielle sont fonctionnelles, mais ont des limitations notables :

  • Seul un sous-ensemble de fonctionnalités peut être disponible.

  • Le comportement peut différer de PySpark dans des scénarios spécifiques.

  • Une configuration supplémentaire peut être nécessaire.

  • Les caractéristiques de performance peuvent varier.

APIs non prises en charge

Les APIs qui ne sont pas actuellement implémentées ou ne peuvent pas être prises en charge sur Snowflake.

DataFrame APIs

La couverture de l’API DataFrame principale.

APIs entièrement compatibles

  • 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 hautement compatibles

  • agg

  • colRegex

  • corr

  • cov

  • crosstab

  • cube

  • describe

  • distinct

  • drop

  • exceptAll

  • groupBy

  • groupby

  • intersect

  • intersectAll

  • isLocal

  • mapInPandas

  • orderBy

  • rollup

  • sort

  • union

  • unionByName

  • withColumn

Remarques

  • orderBy / sort : Ordre des colonnes déduit du dernier DataFrame dans la chaîne.

  • union / unionByName : Le comportement d’élargissement des types peut varier légèrement.

  • describe : Le format de sortie statistique peut varier.

APIs à compatibilité partielle

  • 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

Remarques

  • explain : Le format du plan de requête diffère de Spark.

  • repartition : Le nombre de partition peut ne pas être exact.

  • sample : La mise en œuvre de l’échantillonnage aléatoire diffère.

  • createTempView : Le cycle de vie de la vue peut varier.

APIs non prises en charge

  • checkSameSparkSession

  • dropDuplicatesWithinWatermark

  • observe

  • pandas_api

  • registerTempTable

  • to_pandas_on_spark

  • withWatermark

Colonne APIs

Couverture pour les opérations de colonne.

APIs entièrement compatibles

  • asc

  • between

  • contains

  • desc

  • eqNullSafe

  • getItem

  • isNull

  • isin

  • like

  • otherwise

  • startswith

  • substr

  • when

APIs hautement compatibles

  • alias

  • asc_nulls_first

  • asc_nulls_last

  • astype

  • bitwiseAND

  • bitwiseOR

  • bitwiseXOR

  • cast

  • desc_nulls_first

  • desc_nulls_last

  • endswith

  • isNotNull

Remarques

  • cast : Certaines conversions non valides renvoient NULL dans Spark, mais une erreur dans Snowpark.

  • alias : Le format d’affichage du champ de structure peut différer.

APIs à compatibilité partielle

  • dropFields

  • ilike

  • over

  • rlike

  • withField

Remarques

  • over : Les spécifications des cadres de fenêtre peuvent présenter des différences subtiles.

  • rlike : La syntaxe Regex suit les conventions de Snowflake.

SparkSession APIs

APIs entièrement compatibles

  • range

  • sql

  • table

APIs hautement compatibles

  • createDataFrame

Remarques

L’inférence de schéma peut produire différents types (tels que NUMBER(38,0) et LONG).

APIs à compatibilité partielle

  • addArtifact

  • addArtifacts

  • addTag

  • clearTags

  • getTags

  • interruptAll

  • interruptOperation

  • interruptTag

  • removeTag

Remarques

  • Les balises sont mappées aux balises de requête Snowflake.

  • Les opérations d’interruption utilisent les IDs de requête Snowflake au lieu des IDs d’opération.

APIs non prises en charge

  • copyFromLocalToFs

  • stop

GroupedData APIs

APIs entièrement compatibles

  • agg

  • mean

  • pivot

APIs hautement compatibles

  • agg

  • mean

  • pivot

APIs à compatibilité partielle

  • apply

  • avg

  • sum

APIs non prises en charge

  • applyInPandasWithState

  • cogroup

DataFrameReader APIs

APIs entièrement compatibles

  • table

APIs hautement compatibles

  • csv

APIs à compatibilité partielle

  • json

  • load

  • parquet

  • jdbc

Remarques

  • Les chemins d’accès aux fichiers utilisent des zones de préparation Snowflake ou le stockage Cloud (S3, GCS, Azure).

  • L’inférence de schéma peut différer de Spark natif.

  • Certaines options spécifiques au format peuvent ne pas être prises en charge.

APIs non prises en charge

  • orc

DataFrameWriter APIs

APIs entièrement compatibles

  • mode

  • saveAsTable

  • text

APIs à compatibilité partielle

  • csv

  • json

  • options

  • parquet

Remarques

  • Les écritures sont effectuées sur des zones de préparation Snowflake ou sur le stockage Cloud.

  • Le comportement de partitionnement peut varier.

APIs non prises en charge

  • bucketBy

  • insertInto

  • jdbc

  • orc

  • sortBy

DataFrameWriterV2 APIs

Couverture pour l’API DataFrameWriterV2 la plus récente.

APIs entièrement compatibles

  • replace

APIs à compatibilité partielle

  • append

  • create

  • createOrReplace

  • option

  • options

  • partitionedBy

  • tableProperty

  • using

APIs de catalogue

APIs entièrement compatibles

  • cacheTable

  • clearCache

  • dropGlobalTempView

  • dropTempView

  • isCached

  • refreshByPath

  • refreshTable

  • uncacheTable

APIs hautement compatibles

  • currentCatalog

  • listCatalogs

  • listColumns

  • recoverPartitions

  • setCurrentCatalog

Remarques

  • listColumns : Les noms des colonnes sont en majuscules, les types sont spécifiques à Snowflake.

  • Les messages d’erreur peuvent varier dans le format.

APIs non prises en charge

  • createExternalTable

  • createTable

  • functionExists

  • getFunction

  • listFunctions

  • registerFunction

Fenêtre et APIs WindowSpec

Couverture des fonctions de fenêtre.

APIs (tous les D0) de fenêtre

  • partitionBy

  • orderBy

  • rangeBetween

  • rowsBetween

  • unboundedPreceding

  • unboundedFollowing

  • currentRow

APIs (tous les D0) WindowSpec

  • partitionBy

  • orderBy

  • rangeBetween

  • rowsBetween