Snowpark Connect for Spark-Eigenschaften

Snowpark Connect for Spark unterstützt die benutzerdefinierte Konfiguration auf eine ähnliche Weise wie Standard-Spark. Sie können Konfigurationseigenschaften nur über die set-Methode durch Verwendung eines Schlüssel-Wert-Paares der Sitzung ändern. Beachten Sie, dass Snowpark Connect for Spark nur einen begrenzten Satz von Eigenschaften erkennt, die die Ausführung beeinflussen. Nicht unterstützte Eigenschaften werden ignoriert, ohne eine Ausnahme auszulösen.

Unterstützte Spark-Eigenschaften

Snowpark Connect for Spark unterstützt eine Teilmenge von Spark-Eigenschaften.

Name der Eigenschaft

Standard

Bedeutung

Seit

spark.app.name

(–)

Anwendungsname für die Abfrageverfolgung auf Snowflake query_tag (Spark-Connect-App-Name={name}) festgelegt.

1.0.0

spark.Catalog.databaseFilterInformationSchema

false

Bei true wird INFORMATION_SCHEMA aus den Datenbanklisten bei Katalogvorgängen herausgefiltert.

1.0.0

spark.hadoop.fs.s3a.access.key

(–)

AWS-Zugriffsschlüssel-ID für die S3-Authentifizierung beim Lesen oder Schreiben in S3-Speicherorte.

1.0.0

spark.hadoop.fs.s3a.assumed.role.arn

(–)

AWS IAM-Rollen-ARN mit S3-Zugriff bei Verwendung der rollenbasierten Authentifizierung.

1.0.0

spark.hadoop.fs.s3a.secret.key

(–)

AWS-Geheimniszugriffsschlüssel für S3-Authentifizierung beim Lesen oder Schreiben an S3-Speicherorten.

1.0.0

spark.hadoop.fs.s3a.server-side-encryption.key

(–)

AWS KMS-Schlüssel-ID für die serverseitige Verschlüsselung bei Verwendung des AWS_SSE_KMS-Verschlüsselungstyps.

1.0.0

spark.hadoop.fs.s3a.session.token

(–)

AWS-Sitzungstoken für temporäre S3-Anmeldeinformationen bei Verwendung von STS.

1.0.0

spark.sql.ansi.enabled

false

Aktiviert den ANSI-SQL-Modus für strengere Typprüfung und Fehlerbehandlung. Bei true lösen arithmetische Überläufe und ungültige Umwandlungen Fehler aus, statt NULL zurückzugeben.

1.0.0

spark.sql.caseSensitive

false

Steuert die Groß-/Kleinschreibung für Bezeichner. Bei :code:`false`wird bei Spalten- und Tabellennamen die Groß-/Kleinschreibung nicht berücksichtigt (Snowflake wandelt automatisch in Großbuchstaben um).

1.0.0

spark.sql.crossJoin.enabled

true

Aktiviert oder deaktiviert implizite Kreuzverknüpfungen (Cross Joins). Ein false und eine fehlende oder unbedeutende Verknüpfungsbedingung führen zu einem Fehler.

1.0.0

spark.sql.execution.pythonUDTF.arrow.enabled

false

Bei true wird die Apache Arrow-Optimierung für Python UDTF-Serialisierung/Deserialisierung aktiviert.

1.0.0

spark.sql.globalTempDatabase

global_temp

Schemaname für globale temporäre Ansichten; wird automatisch erstellt, falls noch nicht vorhanden.

1.0.0

spark.sql.legacy.allowHashOnMapType

false

Bei true ist das Hashing von MAPTyp-Spalten zulässig. Standardmäßig können MAP-Typen aus Gründen der Einheitlichkeit mit dem Spark-Verhalten nicht gehasht werden.

1.0.0

spark.sql.legacy.dataset.nameNonStructGroupingKeyAsValue

false

Älteres Verhalten bei der Benennung von Gruppierungsschlüsseln für Datensets.

1.6.0

spark.sql.mapKeyDedupPolicy

EXCEPTION

Steuert das Verhalten, wenn bei der Zuordnungserstellung doppelte Schlüssel gefunden werden. Werte: EXCEPTION (Fehler auslösen) oder LAST_WIN (letzten Wert beibehalten).

1.0.0

spark.sql.parser.quotedRegexColumnNames

false

Bei true wird der Regex-Mustervergleich in Spaltennamen in Anführungszeichen in SQL-Abfragen (z. B SELECT '(col1|col2)' FROM table) aktiviert.

1.0.0

spark.sql.parquet.outputTimestampType

TIMESTAMP_MILLIS

Steuert den Zeitstempeltyp der Parquet-Ausgabe. Unterstützt TIMESTAMP_MILLIS oder TIMESTAMP_MICROS.

1.7.0

spark.sql.pyspark.inferNestedDictAsStruct.enabled

false

Bei true werden verschachtelte Python-Dictionarys als StructType anstelle von MapType während der DataFrame-Erstellung abgeleitet.

1.0.0

spark.sql.pyspark.legacy.inferArrayTypeFromFirstElement.enabled

false

Bei :code:`true`wird der Typ des Array-Elements nur vom ersten Element abgeleitet, anstatt dass alle Elemente abgefragt werden.

1.0.0

spark.sql.repl.eagerEval.enabled

false

Bei true wird die Eager-Evaluation in REPL aktiviert, sodass DataFrame-Ergebnisse automatisch und ohne Aufruf von show() angezeigt werden.

1.0.0

spark.sql.repl.eagerEval.maxNumRows

20

Maximale Anzahl von Zeilen, die im REPL-Eager-Evaluationsmodus angezeigt werden.

1.0.0

spark.sql.repl.eagerEval.truncate

20

Maximale Breite für Spaltenwerte in REPL-Eager-Evaluation wird vor dem Abschneiden angezeigt.

1.0.0

spark.sql.session.localRelationCacheThreshold

2147483647

Byte-Schwellenwert für das Zwischenspeichern lokaler Beziehungen. Beziehungen, die größer als dies sind, werden zwischengespeichert, um die Leistung zu verbessern.

1.0.0

spark.sql.session.timeZone

<system_local_timezone>

Zeitzone der Sitzung, die für Zeitstempelvorgänge verwendet wird. Synchronisiert mit der Snowflake-Sitzung über ALTER SESSION SET TIMEZONE.

1.0.0

spark.sql.sources.default

parquet

Standard-Datenquellenformat für Lese-/Schreibvorgänge, wenn Format nicht explizit angegeben ist.

1.0.0

spark.sql.timestampType

TIMESTAMP_LTZ

Standard-Zeitstempeltyp für Zeitstempelvorgänge. Werte: TIMESTAMP_LTZ (mit lokaler Zeitzone) oder TIMESTAMP_NTZ (ohne Zeitzone).

1.0.0

spark.sql.tvf.allowMultipleTableArguments.enabled

true

Bei true können Funktionen mit Tabellenwerten mehrere Tabellenargumente akzeptieren.

1.0.0

Unterstützte Snowpark Connect for Spark-Eigenschaften

Benutzerdefinierte Konfigurationseigenschaften für Snowpark Connect for Spark.

Name der Eigenschaft

Standard

Bedeutung

Seit

fs.azure.sas.<container>.<account>.blob.core.windows.net

(–)

Azure SAS-Token für die Blob Storage-Authentifizierung. Wird verwendet, wenn in Azure Blob Storage-Speicherorte gelesen oder geschrieben werden.

1.0.0

fs.azure.sas.fixed.token.<account>.dfs.core.windows.net

(–)

Azure SAS-Token für ADLS Gen2 (Data Lake Storage)-Authentifizierung. Wird verwendet, wenn in Azure Data Lake Storage Gen2-Speicherorte gelesen oder geschrieben werden.

1.0.0

mapreduce.fileoutputcommitter.marksuccessfuljobs

false

Bei true wird die _SUCCESS-Datei nach erfolgreichen Schreibvorgänge für Kompatibilität mit Hadoop/Spark-Workflows generiert.

1.0.0

parquet.enable.summary-metadata

false

Alternative Konfiguration zum Generieren von Parquet-Metadatendateien mit Zusammenfassungen. Dies oder spark.sql.parquet.enable.summary-metadata aktiviert das Feature.

1.4.0

snowflake.repartition.for.writes

false

Bei true wird DataFrame.repartition(n) erzwungen, um die Ausgabe während des Schreibvorgangs in n Dateien aufzuteilen. Entspricht dem Spark-Verhalten, erhöht jedoch den Overhead.

1.0.0

snowpark.connect.cte.optimization_enabled

false

Bei true wird die Common Table Expression (CTE)-Optimierung in Snowpark-Sitzungen zur Verbesserung der Abfrageleistung aktiviert.

1.0.0

snowpark.connect.describe_cache_ttl_seconds

300

Lebensdauer von Abfrage-Cache-Einträgen in Sekunden. Reduziert wiederholte Schemasuchvorgänge.

1.0.0

snowpark.connect.enable_snowflake_extension_behavior

false

Bei true werden Snowflake-spezifische Erweiterungen aktiviert, die sich vom Verhalten von Spark unterscheiden können (z. B. Hash auf MAP-Typen oder MD5-Rückgabetyp).

1.0.0

snowpark.connect.handleIntegralOverflow

false

Bei true ist das integrale Überlaufverhalten auf den Spark-Ansatz abgestimmt.

1.7.0

snowpark.connect.iceberg.external_volume

(–)

Name des externen Snowflake-Volumes für Vorgänge mit der Iceberg-Tabelle.

1.0.0

snowpark.connect.integralTypesEmulation

client_default

Steuert die Umwandlung von Dezimal- in Ganzzahltypen. Werte: client_default, enabled, disabled

1.7.0

snowpark.connect.scala.version

2.12

Steuert die verwendete Scala-Version (unterstützt 2.12 oder 2.13)

1.7.0

snowpark.connect.sql.partition.external_table_location

(–)

Speicherortpfad der externen Tabelle für partitionierte Schreibvorgänge.

1.4.0

snowpark.connect.temporary.views.create_in_snowflake

false

Bei true werden temporäre Ansichten direkt in Snowflake erstellt, statt sie lokal zu verwalten.

1.0.1

snowpark.connect.udf.imports [DEPRECATED 1.7.0]

(–)

Durch Kommas getrennte Liste von Dateien oder Modulen, die für die UDF-Ausführung importiert werden sollen. Löst die UDF-Wiederherstellung aus, wenn sich etwas geändert hat.

1.0.0

snowpark.connect.udf.python.imports

(–)

Durch Kommas getrennte Liste von Dateien/Modulen, die für die Python UDF-Ausführung importiert werden sollen. Löst die UDF-Wiederherstellung aus, wenn sich etwas geändert hat.

1.7.0

snowpark.connect.udf.java.imports

(–)

Durch Kommas getrennte Liste von Dateien oder Modulen, die für die Java UDF-Ausführung importiert werden sollen. Löst die UDF-Wiederherstellung aus, wenn sich etwas geändert hat.

1.7.0

snowpark.connect.udf.packages

(–)

Durch Kommas getrennte Liste von Python-Paketen, die bei der Registrierung von UDFs eingebunden werden sollen.

1.0.0

snowpark.connect.udtf.compatibility_mode

false

Bei true wird Spark-kompatibles UDTF-Verhalten für verbesserte Kompatibilität mit der Spark UDTF-Semantik aktiviert.

1.0.0

snowpark.connect.version

<current_version>

Schreibgeschützt. Gibt die aktuelle Snowpark Connect for Spark-Version zurück.

1.0.0

snowpark.connect.views.duplicate_column_names_handling_mode

rename

Verwenden von doppelten Spaltennamen in Ansichten. Werte: rename (Suffix hinzufügen) fail (Fehler auslösen) oder drop (Duplikate entfernen).

1.0.0

spark.sql.parquet.enable.summary-metadata

false

Bei true werden Parquet-Zusammenfassungs-Metadatendateien (_metadata _common_metadata) bei Parquet-Schreibvorgängen erzeugt.

1.4.0

fs.azure.sas.<container>.<account>.blob.core.windows.net

Gibt das Azure SAS-Token für die Blob Storage-Authentifizierung an. Wird verwendet, wenn in Azure Blob Storage-Speicherorte gelesen oder geschrieben werden.

Standard: (–)

Seit: 1.0.0

fs.azure.sas.fixed.token.<account>.dfs.core.windows.net

Gibt das Azure SAS-Token für die ADLS Gen2 (Data Lake Storage)-Authentifizierung an. Wird verwendet, wenn in Azure Data Lake Storage Gen2-Speicherorte gelesen oder geschrieben werden.

Standard: (–)

Seit: 1.0.0

mapreduce.fileoutputcommitter.marksuccessfuljobs

Geben Sie true an, um die _SUCCESS-Datei nach erfolgreichen Schreibvorgängen für Kompatibilität mit Hadoop- oder Spark-Workflows zu generieren.

Standard: false

Seit: 1.0.0

parquet.enable.summary-metadata

Gibt die alternative Konfiguration für das Generieren von Parquet-Metadatendateien an. Aktiviert dieses Feature mit dieser Eigenschaft oder spark.sql.parquet.enable.summary-metadata.

Standard: false

Seit: 1.4.0

snowflake.repartition.for.writes

Geben Sie true an, um zu erzwingen, dass DataFrame.repartition(n) die Ausgabe während des Schreibvorgangs in n Dateien aufteilt. Entspricht dem Spark-Verhalten, erhöht jedoch den Overhead.

Standard: false

Seit: 1.0.0

snowpark.connect.cte.optimization_enabled

Geben Sie true an, um die CTE-Optimierung (Common Table Expression) in der Snowpark-Sitzung für Abfrageleistung zu aktivieren.

Standard: false

Seit: 1.0.0

Kommentare

Konfiguration, die Allgemeine Snowflake-Tabellenausdrücke (CTEs) aktiviert. Diese Konfiguration optimiert die Snowflake-Abfragen, in denen es viele sich wiederholende Codeblöcke gibt. Diese Änderung wird zu Verbesserungen sowohl bei der Abfragekompilierung als auch bei der Ausführung führen.

snowpark.connect.describe_cache_ttl_seconds

Gibt die Lebensdauer in Sekunden für Abfrage-Cache-Einträge an. Reduziert wiederholte Schemasuchvorgänge.

Standard: 300

Seit: 1.0.0

snowpark.connect.enable_snowflake_extension_behavior

Geben Sie true an, um Snowflake-spezifische Erweiterungen zu aktivieren, die sich vom Verhalten von Spark unterscheiden können (z. B. ein Hash auf MAP-Typ oder MD5-Rückgabetyp).

Standard: false

Seit: 1.0.0

Kommentare

Bei true ändert sich das Verhalten bestimmter Vorgänge:

snowpark.connect.handleIntegralOverflow

Geben Sie true an, um das integrale Überlaufverhalten an den Spark-Ansatz anzupassen.

Standard: false

Seit: 1.7.0

snowpark.connect.iceberg.external_volume

Gibt den Namen des externen Snowflake-Volumes für Vorgänge in der Iceberg-Tabelle an.

Standard: (–)

Seit: 1.0.0

snowpark.connect.integralTypesEmulation

Gibt an, wie Dezimal- in Ganzzahltypen konvertiert werden sollen. Werte: client_default, enabled, disabled

Standard: client_default

Seit: 1.7.0

Kommentare

Standardmäßig behandelt Snowpark Connect for Spark alle ganzzahligen Typen als Long-Typen Dies wird durch die Art und Weise verursacht, in der Zahlen in Snowflake dargestellt werden. Die Emulierung von Ganzzahl-Typen ermöglicht beim Lesen von Datenquellen eine exakte Zuordnung zwischen Snowpark- und Spark-Typen.

Die Standardoption client_default aktiviert die Emulation nur, wenn das Skript vom Scala-Client ausgeführt wird. Ganzzahl-Typen werden auf der Grundlage der folgenden Genauigkeiten zugeordnet:

Genauigkeit

Spark-Typ

19

LongType

10

IntegerType

5

ShortType

3

ByteType

Andere

DecimalType(precision, 0)

Wenn andere Genauigkeiten gefunden werden, wird der endgültige Typ dem DecimalType zugeordnet.

snowpark.connect.scala.version

Gibt die zu verwendende Scala-Version an (unterstützt 2.12 oder 2.13).

Standard: 2.12

Seit: 1.7.0

snowpark.connect.sql.partition.external_table_location

Gibt den Speicherortpfad der externen Tabelle für partitionierte Schreibvorgänge an.

Standard: (–)

Seit: 1.4.0

Kommentare

Um nur eine genaue Teilmenge der partitionierten Dateien aus dem angegebenen Verzeichnis zu lesen, ist eine zusätzliche Konfiguration erforderlich. Dieses Feature ist nur für Dateien verfügbar, die auf externen Stagingbereichen gespeichert sind. Um die gelesenen Dateien abzutrennen, verwendet Snowpark Connect for Spark externe Tabellen.

Dieses Feature wird aktiviert, wenn die Konfiguration snowpark.connect.sql.partition.external_table_location festgelegt ist. Sie sollte bestehende Datenbank- und Schemanamen enthalten, in denen externe Tabellen erstellt werden.

Beim Lesen von Parquet-Dateien, die in externen Stagingbereichen gespeichert sind, wird eine externe Tabelle erstellt. Für Dateien in internen Stagingbereichen wird er nicht erstellt. Die Bereitstellung des Schemas verkürzt die Ausführungszeit, sodass keine Kosten für die Ableitung aus den Quellen entfallen.

Um die beste Leistung zu erzielen, filtern Sie nach Einschränkungen beim Filtern von externen Snowflake-Tabellen.

Beispiel
spark.conf.set("snowpark.connect.sql.partition.external_table_location", "<database-name>.<schema-name>")

spark.read.parquet("@external-stage/example").filter(col("x") > lit(1)).show()

schema = StructType([StructField("x",IntegerType()),StructField("y",DoubleType())])

spark.read.schema(schema).parquet("@external-stage/example").filter(col("x") > lit(1)).show()
Copy

snowpark.connect.temporary.views.create_in_snowflake

Geben Sie true an, um temporäre Ansichten direkt in Snowflake zu erstellen, anstatt sie lokal zu verwalten.

Standard: false

Seit: 1.0.1

snowpark.connect.udf.imports [DEPRECATED 1.7.0]

Gibt eine durch Kommas getrennte Liste von Dateien und Modulen an, die für die UDF-Ausführung importiert werden sollen. Wenn dieser Wert geändert wird, wird die UDF-Neuerstellung ausgelöst.

Standard: (–)

Seit: 1.0.0

snowpark.connect.udf.python.imports

Gibt eine durch Kommas getrennte Liste von Dateien und Modulen an, die für die Python UDF-Ausführung importiert werden sollen. Wenn dieser Wert geändert wird, wird die UDF-Neuerstellung ausgelöst.

Standard: (–)

Seit: 1.7.0

snowpark.connect.udf.java.imports

Gibt eine durch Kommas getrennte Liste von Dateien und Modulen an, die für die Java UDF-Ausführung importiert werden sollen. Löst die UDF-Wiederherstellung aus, wenn sich etwas geändert hat.

Standard: (–)

Seit: 1.7.0

Kommentare

Diese Konfiguration funktioniert sehr ähnlich wie snowpark.connect.udf.python.imports. Damit können Sie externe Bibliotheken und Dateien für Java-UDFs angeben, die mit registerJavaFunction erstellt wurden. Konfigurationen schließen sich gegenseitig aus, um eine unnötige Vermischung von Abhängigkeiten zu verhindern.

Um externe Bibliotheken und Dateien einzubeziehen, geben Sie Stagingbereichspfade zu den Dateien als Wert der Konfigurationseinstellung snowpark.connect.udf.java.imports an. Der Wert der Konfiguration sollte ein Array von Stagingbereichspfaden zu den Dateien sein, wobei die Pfade durch Kommas getrennt sind.

Beispiel

Der Code im folgenden Beispiel enthält zwei Dateien im UDF-Ausführungskontext. Die UDF importiert Funktionen aus diesen Dateien und verwendet sie in ihrer Logik.

# Files need to be previously staged

spark.conf.set("snowpark.connect.udf.java.imports", "[@stage/library.jar]")

spark.registerJavaFunction("javaFunction", "com.example.ExampleFunction")

spark.sql("SELECT javaFunction('arg')").show()
Copy

Sie können die snowpark.connect.udf.java.imports-Einstellung verwenden, um auch andere Arten von Dateien einzuschließen, z. B. Dateien mit Daten, die Ihr Code lesen muss. Beachten Sie, dass Ihr Code in diesem Fall nur aus den eingebundenen Dateien lesen sollte. Alle Schreibvorgänge in solche Dateien gehen nach Beendigung der Ausführung der Funktion verloren.

snowpark.connect.udf.packages

Gibt eine durch Kommas getrennte Liste von Python-Paketen an, die bei der Registrierung von UDFs einbezogen werden sollen.

Standard: (–)

Seit: 1.0.0

Kommentare

Sie können dies verwenden, um zusätzliche Pakete zu definieren, die in Python-UDFs verfügbar sein sollen. Der Wert ist eine durch Kommas getrennte Liste von Abhängigkeiten.

Sie können die Liste der unterstützten Pakete ermitteln, indem Sie in Snowflake den folgenden SQL-Befehl ausführen:

SELECT * FROM INFORMATION_SCHEMA.PACKAGES WHERE LANGUAGE = 'python';
Copy
Beispiel
spark.conf.set("snowpark.connect.udf.packages", "[numpy]")

@udtf(returnType="val: int")

class Powers:

  def eval(self, x: int):
      import numpy as np

      for v in np.power(np.array([x, x, x]), [0, 1, 2]):
          yield (int(v),)

spark.udtf.register(name="powers", f=Powers)

spark.sql("SELECT * FROM powers(10)").show()
Copy

Weitere Informationen dazu finden Sie unter Python.

snowpark.connect.udtf.compatibility_mode

Geben Sie true an, um Spark-kompatibles UDTF-Verhalten für verbesserte Kompatibilität mit der Spark UDTF-Semantik zu aktivieren.

Standard: false

Seit: 1.0.0

Kommentare

Diese Eigenschaft bestimmt, ob UDTFs Spark-kompatibles Verhalten oder Standard-Snowpark-Verhalten verwenden soll. Bei true wird ein Kompatibilitäts-Wrapper angewendet, der die Koersion des Ausgabetyps und die Fehlerbehandlungsmuster von Spark nachahmt.

Wenn aktiviert, verwenden UDTFs einen Kompatibilitäts-Wrapper, der die automatische Typenzwang (z. B. „Zeichenfolge ‚true‘“ auf „boolesch“, „boolesch“ auf „Ganzzahl“) und die Fehlerbehandlung anwendet. Der Wrapper konvertiert auch Tabellenargumente in zeilenähnliche Objekte für den Positions- und den Namenszugriff und behandelt korrekt SQL-Nullwerte entsprechend den Verhaltensmustern von Spark.

snowpark.connect.version

Gibt die aktuelle Snowpark Connect for Spark-Version zurück. Schreibgeschützt.

Standard: <current_version>

Seit: 1.0.0

snowpark.connect.views.duplicate_column_names_handling_mode

Gibt an, wie doppelte Spaltennamen in Ansichten behandelt werden sollen. Zu den zulässigen Werten gehören: rename (Suffix hinzufügen) fail (Fehler auslösen) oder drop (Duplikate entfernen).

Standard: rename

Seit: 1.0.0

Kommentare

Snowflake unterstützt keine doppelten Spaltennamen.

Beispiel

Der folgende Code schlägt beim Schritt „Ansicht erstellen“ mit den folgenden SQL-Kompilierungsfehler fehl: „duplicate column name ‚foo‘“.

df = spark.createDataFrame([
(1, 1),
(2, 2)
], ["foo", "foo"])

df.show() # works

df.createTempView("df_view") # Fails with SQL compilation error: duplicate column name 'foo'
Copy

Um dies zu umgehen, setzen Sie die Konfigurationsoption snowpark.connect.views.duplicate_column_names_handling_mode auf einen der folgenden Werte:

  • rename: Ein Suffix wie _dedup_1, _dedup_2 usw. wird an alle doppelten Spaltennamen mit Ausnahme des ersten Vorkommens des Namens angehängt.

  • drop: Alle doppelten Spalten bis auf eine werden gelöscht. Dies kann zu falschen Ergebnissen führen, wenn die Spalten unterschiedliche Werte enthalten.

snowpark.connect.udf.java.imports

Gibt eine durch Kommas getrennte Liste von Dateien und Modulen an, die für die Java UDF-Ausführung importiert werden sollen. Löst die UDF-Wiederherstellung aus, wenn sich etwas geändert hat.

Standard: (–)

Seit: 1.7.0

Kommentare

Diese Konfiguration funktioniert sehr ähnlich wie snowpark.connect.udf.python.imports. Sie können damit externe Bibliotheken und Dateien für Java-UDFs angeben, die mit registerJavaFunction erstellt wurden. Konfigurationen schließen sich gegenseitig aus, um eine unnötige Vermischung von Abhängigkeiten zu verhindern.

Um externe Bibliotheken und Dateien einzubeziehen, geben Sie Stagingbereichspfade zu den Dateien als Wert der Konfigurationseinstellung snowpark.connect.udf.java.imports an. Der Wert ist ein Array von Stagingbereichspfaden zu den Dateien, wobei die Pfade durch Kommas getrennt sind.

Beispiel

Der Code im folgenden Beispiel enthält zwei Dateien im UDF-Ausführungskontext. Die UDF importiert Funktionen aus diesen Dateien und verwendet sie in ihrer Logik.

# Files need to be previously staged

spark.conf.set("snowpark.connect.udf.java.imports", "[@stage/library.jar]")

spark.registerJavaFunction("javaFunction", "com.example.ExampleFunction")

spark.sql("SELECT javaFunction('arg')").show()
Copy

Sie können die snowpark.connect.udf.java.imports-Einstellung verwenden, um auch andere Arten von Dateien einzuschließen, z. B. Dateien mit Daten, die Ihr Code lesen muss. Ihr Code sollte in diesem Fall nur aus den eingebundenen Dateien lesen. Alle Schreibvorgänge in solche Dateien gehen nach Beendigung der Ausführung der Funktion verloren.

snowpark.connect.udf.packages

Gibt eine durch Kommas getrennte Liste von Python-Paketen an, die bei der Registrierung von UDFs einbezogen werden sollen.

Standard: (–)

Seit: 1.0.0

Kommentare

Die Konfiguration ermöglicht die Definition zusätzlicher Pakete, die in Python-UDFs verfügbar sind. Der Wert ist eine durch Kommas getrennte Liste von Abhängigkeiten.

Sie können die Liste der unterstützten Pakete ermitteln, indem Sie in Snowflake den folgenden SQL-Befehl ausführen:

SELECT * FROM INFORMATION_SCHEMA.PACKAGES WHERE LANGUAGE = 'python';
Copy
Beispiel
spark.conf.set("snowpark.connect.udf.packages", "[numpy]")

@udtf(returnType="val: int")

class Powers:

  def eval(self, x: int):
      import numpy as np

      for v in np.power(np.array([x, x, x]), [0, 1, 2]):
          yield (int(v),)

spark.udtf.register(name="powers", f=Powers)

spark.sql("SELECT * FROM powers(10)").show()
Copy

Referenz: Paketreferenz

snowpark.connect.udtf.compatibility_mode

Geben Sie true an, um Spark-kompatibles UDTF-Verhalten für verbesserte Kompatibilität mit Spark-UDTF-Semantik zu ermöglichen.

Standard: false

Seit: 1.0.0

Kommentare

Diese Konfiguration bestimmt, ob UDTFs Spark-kompatibles Verhalten oder Standard-Snowpark-Verhalten verwenden soll. Bei Aktivierung (true) wird ein Kompatibilitäts-Wrapper angewendet, der die Koersion des Ausgabetyps und die Fehlerbehandlungsmuster von Spark nachahmt.

Wenn aktiviert, verwenden UDTFs einen Kompatibilitäts-Wrapper, der die automatische Typenzwang (z. B. „Zeichenfolge ‚true‘“ auf „boolesch“, „boolesch“ auf „Ganzzahl“) und die Fehlerbehandlung anwendet. Der Wrapper konvertiert auch Tabellenargumente in zeilenähnliche Objekte für den Positions- und den Namenszugriff und behandelt korrekt SQL-Nullwerte entsprechend den Verhaltensmustern von Spark.