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

  • 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 mit hoher Kompatibilität

  • agg

  • colRegex

  • corr

  • cov

  • crosstab

  • cube

  • describe

  • distinct

  • drop

  • exceptAll

  • groupBy

  • groupby

  • intersect

  • intersectAll

  • isLocal

  • mapInPandas

  • orderBy

  • rollup

  • sort

  • union

  • unionByName

  • withColumn

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

  • 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

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

  • checkSameSparkSession

  • dropDuplicatesWithinWatermark

  • observe

  • pandas_api

  • registerTempTable

  • to_pandas_on_spark

  • withWatermark

Spalten-APIs

Abdeckung von Spaltenoperationen.

APIs mit voller Kompatibilität

  • asc

  • between

  • contains

  • desc

  • eqNullSafe

  • getItem

  • isNull

  • isin

  • like

  • otherwise

  • startswith

  • substr

  • when

APIs mit hoher Kompatibilität

  • alias

  • asc_nulls_first

  • asc_nulls_last

  • astype

  • bitwiseAND

  • bitwiseOR

  • bitwiseXOR

  • cast

  • desc_nulls_first

  • desc_nulls_last

  • endswith

  • isNotNull

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

  • dropFields

  • ilike

  • over

  • rlike

  • withField

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

  • range

  • sql

  • table

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

  • addArtifact

  • addArtifacts

  • addTag

  • clearTags

  • getTags

  • interruptAll

  • interruptOperation

  • interruptTag

  • removeTag

Anmerkungen

  • Tags werden Snowflake-Abfrage-Tags zugeordnet.

  • Unterbrechungsvorgänge verwenden Snowflake-Abfrage-IDs anstelle von Vorgangs-IDs.

Nicht unterstützte APIs

  • copyFromLocalToFs

  • stop

GroupedData-APIs

APIs mit voller Kompatibilität

  • agg

  • mean

  • pivot

APIs mit hoher Kompatibilität

  • agg

  • mean

  • pivot

APIs mit teilweiser Kompatibilität

  • apply

  • avg

  • sum

Nicht unterstützte APIs

  • applyInPandasWithState

  • cogroup

DataFrameReader-APIs

APIs mit voller Kompatibilität

  • table

APIs mit hoher Kompatibilität

  • csv

APIs mit teilweiser Kompatibilität

  • json

  • load

  • parquet

  • jdbc

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

  • mode

  • saveAsTable

  • text

APIs mit teilweiser Kompatibilität

  • csv

  • json

  • options

  • parquet

Anmerkungen

  • Schreibvorgänge werden in Snowflake-Stagingbereichen oder im Cloudspeicher vorgenommen.

  • Das Partitionierungsverhalten kann unterschiedlich sein.

Nicht unterstützte APIs

  • bucketBy

  • insertInto

  • jdbc

  • orc

  • sortBy

DataFrameWriterV2-APIs

Abdeckung der neueren DataFrameWriterV2 API.

APIs mit voller Kompatibilität

  • replace

APIs mit teilweiser Kompatibilität

  • append

  • create

  • createOrReplace

  • option

  • options

  • partitionedBy

  • tableProperty

  • using

Katalog-APIs

APIs mit voller Kompatibilität

  • cacheTable

  • clearCache

  • dropGlobalTempView

  • dropTempView

  • isCached

  • refreshByPath

  • refreshTable

  • uncacheTable

APIs mit hoher Kompatibilität

  • currentCatalog

  • listCatalogs

  • listColumns

  • recoverPartitions

  • setCurrentCatalog

Anmerkungen

  • listColumns: Spaltennamen werden in Großbuchstaben angegeben, Typen sind Snowflake-spezifisch.

  • Fehlermeldungen können sich im Format unterscheiden.

Nicht unterstützte APIs

  • createExternalTable

  • createTable

  • functionExists

  • getFunction

  • listFunctions

  • registerFunction

Fenster und WindowSpec APIs

Abdeckung von Fensterfunktionen.

Window (alle D0) APIs

  • partitionBy

  • orderBy

  • rangeBetween

  • rowsBetween

  • unboundedPreceding

  • unboundedFollowing

  • currentRow

WindowSpec(alle D0) APIs

  • partitionBy

  • orderBy

  • rangeBetween

  • rowsBetween