Snowpark Migration Accelerator : Catégories de référence Spark¶
SnowConvert pour Spark classe les éléments Spark en fonction de la manière dont ils peuvent être mappés à Snowpark. Les catégories suivantes décrivent la manière dont chaque référence Spark est traduite, y compris :
Si SnowConvert peut la convertir automatiquement
S’il est possible de la mettre en œuvre dans Snowpark. Il fournit également :
Des exemples de traduction
Une description du processus de mappage
Les sections ci-dessous expliquent chaque type de statut et fournissent des exemples.
Direct¶
La traduction directe signifie que la fonction fonctionne exactement de la même manière dans PySpark et Snowpark, sans aucune exigence de modification du code.
Prise en charge Snowpark : disponible
Prise en charge de l’outil : disponible
Exemple Spark :
col("col1")
Exemple Snowpark :
col("col1")
Renommer¶
La fonction PySpark a un équivalent dans Snowpark, mais vous devez utiliser un nom de fonction différent.
Prise en charge Snowpark : disponible
Prise en charge de l’outil : disponible
Exemple Spark :
orderBy("date")
Exemple Snowpark :
sort("date")
Assistant¶
Note
À partir de Spark Conversion Core V2.40.0, la bibliothèque d’extensions Python n’est plus prise en charge. Les éléments Spark Python ne seront plus classés comme des extensions à partir de cette version. Cependant, les classes d’assistant de la bibliothèque d’extensions Snowpark continueront d’être disponibles pour Spark Scala.
Pour pallier la différence entre les fonctionnalités de Spark et de Snowpark, vous pouvez créer une fonction d’aide dans un fichier d’extension. Cette fonction d’aide aura la même signature que la fonction Spark d’origine et pourra être appelée à partir de n’importe quel fichier si nécessaire. La bibliothèque d’extensions contiendra cette fonction pour résoudre le problème de compatibilité.
Pour plus d’informations sur la bibliothèque d’extensions Snowpark, consultez notre référentiel GitHub à l’adresse https://github.com/Snowflake-Labs/snowpark-extensions.
Il peut s’agir, par exemple, de la correction de paramètres supplémentaires ou de la modification de l’ordre des paramètres.
Prise en charge Snowpark : disponible
Prise en charge de l’outil : disponible
Exemple Spark :
instr(str, substr)
Exemple Snowpark :
# 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)
Exemple Snowpark :
col1 = col("col1")
col2 = col("col2")
from snowflake.snowpark.functions as f
f.contains(col, col2)
WorkAround¶
Cette catégorie s’applique lorsque SMA ne peut pas convertir automatiquement un élément PySpark, mais qu’il existe une solution manuelle documentée dans la documentation de l’outil pour vous aider à effectuer la conversion.
Prise en charge Snowpark : disponible
Prise en charge de l’outil : non disponible
Exemple Spark :
instr(str, substr)
Exemple Snowpark :
#EWI: SPRKPY#### => pyspark function has a workaround, see documentation for more info
charindex(substr, str)
NotSupported¶
Cette catégorie s’applique lorsqu’un élément PySpark ne peut pas être converti car il n’y a pas d’équivalent dans Snowflake.
Prise en charge Snowpark : non disponible
Prise en charge de l’outil : non disponible
Exemple Spark :
df:DataFrame = spark.createDataFrame(rowData, columns)
df.alias("d")
Exemple Snowpark :
df:DataFrame = spark.createDataFrame(rowData, columns)
# EWI: SPRKPY11XX => DataFrame.alias is not supported
# df.alias("d")
NotDefined¶
Cette erreur se produit lorsque l’outil identifie un élément PySpark mais ne peut pas le convertir car l’élément n’est pas inclus dans la base de données de conversion prise en charge par l’outil.
Cette catégorie s’applique lorsqu’un élément PySpark ne peut pas être converti car il n’existe pas de fonction ou de fonctionnalité correspondante dans Snowflake.
Prise en charge Snowpark : non disponible
Prise en charge de l’outil : non disponible
Exemple Spark : Non applicable
Exemple Snowpark : Non applicable
Les résultats de l’évaluation permettront de classer toutes les références Spark API détectées dans les catégories suivantes.