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¶
cachecoalescecollectcountcrossJoindropDuplicatesdrop_duplicatesdropnafillnafirstheadisEmptyjoinlimitmeltoffsetpersistrepartitionByRangereplaceselectshowtailtaketoDFtoLocalIteratortoPandasunionAllunpersistunpivotwherewithColumnsRenamedtoLocalIteratortoPandasunionAllunpersistunpivotwherewithColumnsRenamed
APIs hautement compatibles¶
aggcolRegexcorrcovcrosstabcubedescribedistinctdropexceptAllgroupBygroupbyintersectintersectAllisLocalmapInPandasorderByrollupsortunionunionByNamewithColumn
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¶
aliasapproxQuantilecreateGlobalTempViewcreateOrReplaceGlobalTempViewcreateOrReplaceTempViewcreateTempViewexplainfilterfreqItemshintinputFilesprintSchemarandomSplitrepartitionsameSemanticssamplesampleByselectExprsemanticHashsortWithinPartitionssubtractsummarytransformwithColumnswithMetadata
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¶
checkSameSparkSessiondropDuplicatesWithinWatermarkobservepandas_apiregisterTempTableto_pandas_on_sparkwithWatermark
Colonne APIs¶
Couverture pour les opérations de colonne.
APIs entièrement compatibles¶
ascbetweencontainsdesceqNullSafegetItemisNullisinlikeotherwisestartswithsubstrwhen
APIs hautement compatibles¶
aliasasc_nulls_firstasc_nulls_lastastypebitwiseANDbitwiseORbitwiseXORcastdesc_nulls_firstdesc_nulls_lastendswithisNotNull
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¶
dropFieldsilikeoverrlikewithField
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¶
rangesqltable
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¶
addArtifactaddArtifactsaddTagclearTagsgetTagsinterruptAllinterruptOperationinterruptTagremoveTag
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¶
copyFromLocalToFsstop
GroupedData APIs¶
APIs entièrement compatibles¶
aggmeanpivot
APIs hautement compatibles¶
aggmeanpivot
APIs à compatibilité partielle¶
applyavgsum
APIs non prises en charge¶
applyInPandasWithStatecogroup
DataFrameReader APIs¶
APIs entièrement compatibles¶
table
APIs hautement compatibles¶
csv
APIs à compatibilité partielle¶
jsonloadparquetjdbc
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¶
modesaveAsTabletext
APIs à compatibilité partielle¶
csvjsonoptionsparquet
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¶
bucketByinsertIntojdbcorcsortBy
DataFrameWriterV2 APIs¶
Couverture pour l’API DataFrameWriterV2 la plus récente.
APIs entièrement compatibles¶
replace
APIs à compatibilité partielle¶
appendcreatecreateOrReplaceoptionoptionspartitionedBytablePropertyusing
APIs de catalogue¶
APIs entièrement compatibles¶
cacheTableclearCachedropGlobalTempViewdropTempViewisCachedrefreshByPathrefreshTableuncacheTable
APIs hautement compatibles¶
currentCataloglistCatalogslistColumnsrecoverPartitionssetCurrentCatalog
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¶
createExternalTablecreateTablefunctionExistsgetFunctionlistFunctionsregisterFunction
Fenêtre et APIs WindowSpec¶
Couverture des fonctions de fenêtre.
APIs (tous les D0) de fenêtre¶
partitionByorderByrangeBetweenrowsBetweenunboundedPrecedingunboundedFollowingcurrentRow
APIs (tous les D0) WindowSpec¶
partitionByorderByrangeBetweenrowsBetween