Snowpark Migration Accelerator: Spark-Referenzkategorien¶
SnowConvert für Spark kategorisiert Spark-Elemente auf der Grundlage ihrer Zuordnung zu Snowpark. Die folgenden Kategorien beschreiben, wie jede Spark-Referenz übersetzt wird, einschließlich:
Ob SnowConvert es automatisch konvertieren kann
Ob es möglich ist, in Snowpark zu implementieren. Außerdem bietet es
Beispiele für die Übersetzung
Beschreibung des Zuordnungsprozesses
In den folgenden Abschnitten werden die einzelnen Statustypen erläutert und mit Beispielen versehen.
Direkt¶
Direkte Übersetzung bedeutet, dass die Funktion sowohl in PySpark als auch in Snowpark genau gleich funktioniert und keine Änderungen am Code erforderlich sind.
Snowpark-Unterstützung: Verfügbar
Tool-Unterstützung: Verfügbar
Spark-Beispiel:
col("col1")
Snowpark-Beispiel:
col("col1")
Umbenennen¶
Die PySpark-Funktion hat eine Entsprechung in Snowpark, aber Sie müssen einen anderen Funktionsnamen verwenden.
Snowpark-Unterstützung: Verfügbar
Tool-Unterstützung: Verfügbar
Spark-Beispiel:
orderBy("date")
Snowpark-Beispiel:
sort("date")
Helper¶
Bemerkung
Ab Spark Conversion Core V2.40.0 wird die Python-Extensions-Bibliothek nicht mehr unterstützt. Python Spark-Elemente werden von dieser Version an nicht mehr als Erweiterungen eingestuft. Die Hilfsklassen in der Snowpark Extensions-Bibliothek werden jedoch weiterhin für Spark Scala verfügbar sein.
Um den Unterschied zwischen Spark- und Snowpark-Funktionen auszugleichen, können Sie eine Hilfsfunktion in einer Erweiterungsdatei erstellen. Diese Hilfsfunktion hat die gleiche Signatur wie die ursprüngliche Spark-Funktion und kann bei Bedarf aus jeder Datei aufgerufen werden. Die Erweiterungsbibliothek wird diese Funktion enthalten, um das Kompatibilitätsproblem zu lösen.
Weitere Informationen über die Snowpark Extensions-Bibliothek finden Sie in unserem GitHub-Repository unter https://github.com/Snowflake-Labs/snowpark-extensions.
Beispiele sind feste zusätzliche Parameter und Änderungen der Parameterreihenfolge.
Snowpark-Unterstützung: Verfügbar
Tool-Unterstützung: Verfügbar
Spark-Beispiel:
instr(str, substr)
Snowpark-Beispiel:
# creating a helper function named instr with an
# identical signature as the pyspark function, like:
def instr(source: str, substr: str) -> str:
"""
Returns the position of a substring within a source string.
Similar to the CHARINDEX function in SQL.
Args:
source: The string to search in
substr: The string to search for
Returns:
The position where the substring is found, or 0 if not found
"""
return charindex(substr, str)
## Transformation
The function is rebuilt in Snowpark to achieve the same results as the original, though it may look different. The new version might use multiple functions or additional code lines to accomplish the same task.
* Snowpark Support: Yes
* Tool Support: Yes
* Spark Example:
```{code} python
:force:
col1 = col("col1")
col2 = col("col2")
col1.contains(col2)
Snowpark-Beispiel:
col1 = col("col1")
col2 = col("col2")
from snowflake.snowpark.functions as f
f.contains(col, col2)
WorkAround¶
Diese Kategorie trifft zu, wenn SMA ein PySpark-Element nicht automatisch konvertieren kann, es aber eine dokumentierte manuelle Lösung in der Dokumentation des Tools gibt, die Ihnen hilft, die Konvertierung abzuschließen.
Snowpark-Unterstützung: Verfügbar
Toolunterstützung: Nicht verfügbar
Spark-Beispiel:
instr(str, substr)
Snowpark-Beispiel:
#EWI: SPRKPY#### => pyspark function has a workaround, see documentation for more info
charindex(substr, str)
NotSupported¶
Diese Kategorie trifft zu, wenn ein Element von PySpark nicht konvertiert werden kann, weil es keine passende Entsprechung in Snowflake gibt.
Snowpark-Unterstützung: Nicht verfügbar
Toolunterstützung: Nicht verfügbar
Spark-Beispiel:
df:DataFrame = spark.createDataFrame(rowData, columns)
df.alias("d")
Snowpark-Beispiel:
df:DataFrame = spark.createDataFrame(rowData, columns)
# EWI: SPRKPY11XX => DataFrame.alias is not supported
# df.alias("d")
NotDefined¶
Dieser Fehler tritt auf, wenn das Tool ein PySpark-Element identifiziert, es aber nicht konvertieren kann, weil das Element nicht in der unterstützten Konvertierungsdatenbank des Tools enthalten ist.
Diese Kategorie trifft zu, wenn ein PySpark-Element nicht konvertiert werden kann, weil es kein entsprechendes Feature oder keine entsprechende Funktionalität in Snowflake gibt.
Snowpark-Unterstützung: Nicht verfügbar
Toolunterstützung: Nicht verfügbar
Spark-Beispiel: Nicht zutreffend
Snowpark-Beispiel: Nicht zutreffend
Die Bewertungsergebnisse klassifizieren alle gefundenen Spark API-Referenzen in die folgenden Kategorien.