PySpark APIs unterstützt für Snowpark Connect for Spark¶
Snowpark Connect for Spark unterstützt PySpark APIs, wie in diesem Thema beschrieben.
Snowpark Connect for Spark bietet Kompatibilität mit der Version 3.5.3 der Spark Connect API von PySpark, sodass Sie Spark-Workloads auf Snowflake ausführen können. Die Snowpark Connect for Spark-Kompatibilität wird durch das Ausführungsverhalten definiert, wenn eine Spark-Anwendung ausgeführt wird, die die Version 3.5.3 der Spark Connect-API von Pyspark verwendet. In dieser Anleitung werden die unterstützten APIs und deren Kompatibilitätsstufen beschrieben.
Definitionen der Kompatibilitätsstufe¶
- APIs mit voller Kompatibilität
APIs mit voller Kompatibilität verhalten sich identisch wie native PySpark. Sie können diese APIs mit der Sicherheit verwenden, dass die Ergebnisse genau übereinstimmen.
- APIs mit hoher Kompatibilität
APIs mit hoher Kompatibilität funktionieren korrekt, können aber kleine Unterschiede aufweisen:
Die Formatierung von Fehlermeldungen kann sich unterscheiden.
Das Anzeigeformat der Ausgabe kann variieren (z. B. Genauigkeit der Dezimalstellen, Groß-/Kleinschreibung der Spaltennamen).
Grenzfälle können zu leicht unterschiedlichen Ergebnissen führen.
- APIs mit teilweiser Kompatibilität
APIs mit teilweiser Kompatibilität sind funktionsfähig, haben jedoch relevante Einschränkungen:
Möglicherweise ist nur eine Teilmenge der Funktionalität verfügbar.
Das Verhalten kann sich in bestimmten Szenarien von PySpark unterscheiden.
Möglicherweise ist eine zusätzliche Konfiguration erforderlich.
Die Leistungsmerkmale können sich unterscheiden.
- Nicht unterstützte APIs
APIs, die derzeit nicht implementiert sind oder von Snowflake nicht unterstützt werden.
DataFrame-APIs¶
Der DataFrame API-Kernabdeckung.
APIs mit voller Kompatibilität¶
cachecoalescecollectcountcrossJoindropDuplicatesdrop_duplicatesdropnafillnafirstheadisEmptyjoinlimitmeltoffsetpersistrepartitionByRangereplaceselectshowtailtaketoDFtoLocalIteratortoPandasunionAllunpersistunpivotwherewithColumnsRenamedtoLocalIteratortoPandasunionAllunpersistunpivotwherewithColumnsRenamed
APIs mit hoher Kompatibilität¶
aggcolRegexcorrcovcrosstabcubedescribedistinctdropexceptAllgroupBygroupbyintersectintersectAllisLocalmapInPandasorderByrollupsortunionunionByNamewithColumn
Anmerkungen¶
orderBy/sort: Spaltenreihenfolge, die aus dem letzten DataFrame in der Kette abgeleitet wird.union/unionByName: Das Verhalten bei der Typerweiterung kann leicht abweichen.describe: Das statistische Ausgabeformat kann variieren.
APIs mit teilweiser Kompatibilität¶
aliasapproxQuantilecreateGlobalTempViewcreateOrReplaceGlobalTempViewcreateOrReplaceTempViewcreateTempViewexplainfilterfreqItemshintinputFilesprintSchemarandomSplitrepartitionsameSemanticssamplesampleByselectExprsemanticHashsortWithinPartitionssubtractsummarytransformwithColumnswithMetadata
Anmerkungen¶
explain: Das Format des Abfrageplans unterscheidet sich von Spark.repartition: Die Anzahl der Partitionen ist möglicherweise nicht genau.sample: Die Implementierung von Zufallsstichproben unterscheidet sich.createTempView: Der Lebenszyklus von Ansichten kann sich unterscheiden.
Nicht unterstützte APIs¶
checkSameSparkSessiondropDuplicatesWithinWatermarkobservepandas_apiregisterTempTableto_pandas_on_sparkwithWatermark
Spalten-APIs¶
Abdeckung von Spaltenoperationen.
APIs mit voller Kompatibilität¶
ascbetweencontainsdesceqNullSafegetItemisNullisinlikeotherwisestartswithsubstrwhen
APIs mit hoher Kompatibilität¶
aliasasc_nulls_firstasc_nulls_lastastypebitwiseANDbitwiseORbitwiseXORcastdesc_nulls_firstdesc_nulls_lastendswithisNotNull
Anmerkungen¶
cast: Einige ungültige Umwandlungen geben in Spark NULL zurück, in Snowpark jedoch einen Fehler.alias: Das Anzeigeformat der Strukturfelder kann sich unterscheiden.
APIs mit teilweiser Kompatibilität¶
dropFieldsilikeoverrlikewithField
Anmerkungen¶
over: Die Spezifikationen von Fensterrahmen können kleine Unterschiede aufweisen.rlike: Die Regex-Syntax folgt den Snowflake-Konventionen.
SparkSession-APIs¶
APIs mit voller Kompatibilität¶
rangesqltable
APIs mit hoher Kompatibilität¶
createDataFrame
Anmerkungen¶
Die Schema-Inferenz erzeugt möglicherweise verschiedene Typen (z. B. NUMBER(38,0) im Vgl. zu LONG).
APIs mit teilweiser Kompatibilität¶
addArtifactaddArtifactsaddTagclearTagsgetTagsinterruptAllinterruptOperationinterruptTagremoveTag
Anmerkungen¶
Tags werden Snowflake-Abfrage-Tags zugeordnet.
Unterbrechungsvorgänge verwenden Snowflake-Abfrage-IDs anstelle von Vorgangs-IDs.
Nicht unterstützte APIs¶
copyFromLocalToFsstop
GroupedData-APIs¶
APIs mit voller Kompatibilität¶
aggmeanpivot
APIs mit hoher Kompatibilität¶
aggmeanpivot
APIs mit teilweiser Kompatibilität¶
applyavgsum
Nicht unterstützte APIs¶
applyInPandasWithStatecogroup
DataFrameReader-APIs¶
APIs mit voller Kompatibilität¶
table
APIs mit hoher Kompatibilität¶
csv
APIs mit teilweiser Kompatibilität¶
jsonloadparquetjdbc
Anmerkungen¶
Dateipfade verwenden Snowflake-Stagingbereiche oder Cloudspeicher (S3, GCS, Azure).
Die Schema-Inferenz kann sich von nativem Spark unterscheiden.
Einige formatspezifische Optionen werden möglicherweise nicht unterstützt.
Nicht unterstützte APIs¶
orc
DataFrameWriter-APIs¶
APIs mit voller Kompatibilität¶
modesaveAsTabletext
APIs mit teilweiser Kompatibilität¶
csvjsonoptionsparquet
Anmerkungen¶
Schreibvorgänge werden in Snowflake-Stagingbereichen oder im Cloudspeicher vorgenommen.
Das Partitionierungsverhalten kann unterschiedlich sein.
Nicht unterstützte APIs¶
bucketByinsertIntojdbcorcsortBy
DataFrameWriterV2-APIs¶
Abdeckung der neueren DataFrameWriterV2 API.
APIs mit voller Kompatibilität¶
replace
APIs mit teilweiser Kompatibilität¶
appendcreatecreateOrReplaceoptionoptionspartitionedBytablePropertyusing
Katalog-APIs¶
APIs mit voller Kompatibilität¶
cacheTableclearCachedropGlobalTempViewdropTempViewisCachedrefreshByPathrefreshTableuncacheTable
APIs mit hoher Kompatibilität¶
currentCataloglistCatalogslistColumnsrecoverPartitionssetCurrentCatalog
Anmerkungen¶
listColumns: Spaltennamen werden in Großbuchstaben angegeben, Typen sind Snowflake-spezifisch.Fehlermeldungen können sich im Format unterscheiden.
Nicht unterstützte APIs¶
createExternalTablecreateTablefunctionExistsgetFunctionlistFunctionsregisterFunction
Fenster und WindowSpec APIs¶
Abdeckung von Fensterfunktionen.
Window (alle D0) APIs¶
partitionByorderByrangeBetweenrowsBetweenunboundedPrecedingunboundedFollowingcurrentRow
WindowSpec(alle D0) APIs¶
partitionByorderByrangeBetweenrowsBetween