Problembehandlung bei Python-UDFs

Unter diesem Thema finden Sie Informationen zur Problembehandlung bei Python-UDFs (benutzerdefinierte Funktionen).

Unter diesem Thema:

Problembehandlung

Problem: Eine benötigte Python-Bibliothek ist nicht über Anaconda verfügbar

Python-Bibliotheken von Drittanbietern ohne C/C++-Erweiterungen können von UDFs direkt über Snowflake-Stagingbereiche importiert werden. Weitere Informationen dazu finden Sie unter Erstellen eines Python-UDF mit aus einem Stagingbereich hochgeladenem Code.

Weitere Informationen zum Übermitteln einer Anforderung zur Unterstützung weiterer Anaconda-Pakete finden Sie unter Verwenden von Drittanbieter-Paketen.

Problem: Eine UDF schlägt mit der Fehlermeldung „Function available memory exhausted“ fehl.

Reduzieren Sie den von der UDF verwendeten Arbeitsspeicher.

Prüfen Sie den UDF-Code auf Fehler oder Arbeitsspeicherverluste.

Weitere Informationen dazu finden Sie unter Arbeitsspeicher.

Problem: Ich möchte innerhalb einer UDF eine ZIP-Datei oder andere Archive extrahieren

Ein Beispiel für das Hochladen einer ZIP-Datei in einen Snowflake-Stagingbereich und das anschließende Entpacken in das /tmp-Verzeichnis aus einer UDF heraus finden Sie unter Entpacken einer Stagingdatei.

Problem: UDF-Performance ist langsam

Weitere Informationen zur Verbesserung der Performance von UDFs finden Sie unter Optimierung für Skalierung und Performance.

Problem: Die Rolle ORGADMIN ist nicht aktiviert, sodass Anaconda-Pakete nicht verwendet werden können

Wenn Sie die Schritte zur Verwendung von Drittanbieterpaketen aus Anaconda ausführen möchten, ist die Rolle des Organisationsadministrators (ORGADMIN) erforderlich.

Dieses Problem können Sie lösen, indem Sie die Anleitung unter Aktivieren der ORGADMIN-Rolle für ein Konto befolgen.

Problem: Eine UDF schlägt beim Lesen einer Datei mit dem Fehler „UnicodeDecodeError“ fehl

Wenn Sie die SnowflakeFile-Klasse verwenden, um Dateien zu lesen, die keine Textdaten enthalten, müssen Sie den Eingabemodus als binär angeben. Andernfalls könnte der folgende Fehler auftreten:

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

Um dieses Problem zu lösen, geben Sie den Eingabemodus als binär an, indem Sie für das mode-Argument (das zweite Argument) den Wert 'rb' übergeben. Beispiel:

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

Tipps

Das Training von Modellen des maschinellen Lernens (ML) kann manchmal sehr ressourcenintensiv sein. Snowpark-optimierte Warehouses sind ein Typ von virtuellen Snowflake-Warehouse, der für Workloads verwendet werden kann, die eine große Menge an Arbeitsspeicher und Computeressourcen benötigen. Weiter Informationen zu Machine Learning-Modellen und zu Snowpark Python finden Sie unter Training von Machine Learning-Modellen mit Snowpark Python.

Wenn Sie eine Python-UDF in einer Maskierungsrichtlinie verwenden, müssen Sie sicherstellen, dass die Datentypen von Spalte, UDF und Maskierungsrichtlinie übereinstimmen.

Informationen zur Problembehandlung bei Paketen von Drittanbietern finden Sie unter Bekannte Probleme mit Paketen von Drittanbietern.