Dépannage d’UDFs Python

Cette rubrique fournit des informations de dépannage sur les UDFs Python (fonctions définies par l’utilisateur).

Dans ce chapitre :

Dépannage

Problème : une bibliothèque Python requise n’est pas disponible via Anaconda.

Les bibliothèques Python tierces, qui ne possèdent pas d’extensions C/C++, peuvent être importées par des UDFs directement via des zones de préparation Snowflake. Pour plus d’informations, voir Création d’une UDF Python avec du code téléchargé à partir d’une zone de préparation.

Pour savoir comment soumettre une demande de prise en charge de paquets Anaconda supplémentaires, voir Utilisation de paquets tiers.

Problème : une UDF échoue avec l’erreur « Function available memory exhausted »

Réduisez la quantité de mémoire utilisée par l’UDF.

Vérifiez que le code de l’UDF ne contient pas de bogues ou de fuites de mémoire.

Pour plus d’informations, voir Mémoire.

Problème : je veux extraire un ZIP ou d’autres archives à l’intérieur d’une UDF

Pour voir un exemple de la façon de charger un fichier ZIP vers une zone de préparation Snowflake, puis de le décompresser dans le répertoire /tmp à l’intérieur de l’UDF, voir Décompression d’un fichier en zone de préparation.

Problème : les performances des UDF sont lentes

Pour savoir comment améliorer les performances des UDFs, voir Optimisation de l’échelle et des performances.

Problème : le rôle ORGADMIN n’est pas activé et les paquets Anaconda ne peuvent pas être utilisés.

Lorsque vous suivez les étapes pour commencer à utiliser les paquets tiers d’Anaconda, le rôle d’administrateur de l’organisation (ORGADMIN) est requis.

Pour résoudre ce problème, suivez les instructions de Activation du rôle ORGADMIN dans un compte.

Problème : une UDF échoue avec l’erreur « UnicodeDecodeError » lors de la lecture d’un fichier

Lorsque vous utilisez la classe SnowflakeFile pour lire des fichiers qui contiennent des données non textuelles, vous devez spécifier que le mode d’entrée est binaire. Dans le cas contraire, vous risquez de rencontrer l’erreur suivante :

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf7 in position 12: invalid start byte
Copy

Pour résoudre ce problème, spécifiez le mode d’entrée comme étant binaire en transmettant 'rb' pour l’argument mode (le deuxième argument). Par exemple :

with SnowflakeFile.open(file_name, 'rb') as f:
Copy

Conseils

La formation de modèles de machine learning (ML) peut parfois être très exigeante en ressources. Les entrepôts optimisés pour Snowpark sont un type d’entrepôt virtuel Snowflake qui peut être utilisé pour les charges de travail qui nécessitent une grande quantité de mémoire et de ressources de calcul. Pour des informations sur les modèles de machine learning et sur Snowpark Python, voir Formation de modèles de machine learning avec Snowpark Python.

Si vous utilisez une UDF Python dans une politique de masquage, assurez-vous que le type de données de la colonne, l’UDF et la politique de masquage correspondent.

Pour des informations de dépannage sur les paquets tiers, voir Problèmes connus avec les paquets tiers.