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 |
|---|---|---|---|
|
(–) |
Anwendungsname für die Abfrageverfolgung auf Snowflake |
1.0.0 |
|
|
Bei |
1.0.0 |
|
(–) |
AWS-Zugriffsschlüssel-ID für die S3-Authentifizierung beim Lesen oder Schreiben in S3-Speicherorte. |
1.0.0 |
|
(–) |
AWS IAM-Rollen-ARN mit S3-Zugriff bei Verwendung der rollenbasierten Authentifizierung. |
1.0.0 |
|
(–) |
AWS-Geheimniszugriffsschlüssel für S3-Authentifizierung beim Lesen oder Schreiben an S3-Speicherorten. |
1.0.0 |
|
(–) |
AWS KMS-Schlüssel-ID für die serverseitige Verschlüsselung bei Verwendung des |
1.0.0 |
|
(–) |
AWS-Sitzungstoken für temporäre S3-Anmeldeinformationen bei Verwendung von STS. |
1.0.0 |
|
|
Aktiviert den ANSI-SQL-Modus für strengere Typprüfung und Fehlerbehandlung. Bei |
1.0.0 |
|
|
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 |
|
|
Aktiviert oder deaktiviert implizite Kreuzverknüpfungen (Cross Joins). Ein |
1.0.0 |
|
|
Bei |
1.0.0 |
|
|
Schemaname für globale temporäre Ansichten; wird automatisch erstellt, falls noch nicht vorhanden. |
1.0.0 |
|
|
Bei |
1.0.0 |
|
|
Älteres Verhalten bei der Benennung von Gruppierungsschlüsseln für Datensets. |
1.6.0 |
|
|
Steuert das Verhalten, wenn bei der Zuordnungserstellung doppelte Schlüssel gefunden werden. Werte: |
1.0.0 |
|
|
Bei |
1.0.0 |
|
|
Steuert den Zeitstempeltyp der Parquet-Ausgabe. Unterstützt |
1.7.0 |
|
|
Bei |
1.0.0 |
|
|
Bei :code:`true`wird der Typ des Array-Elements nur vom ersten Element abgeleitet, anstatt dass alle Elemente abgefragt werden. |
1.0.0 |
|
|
Bei |
1.0.0 |
|
|
Maximale Anzahl von Zeilen, die im REPL-Eager-Evaluationsmodus angezeigt werden. |
1.0.0 |
|
|
Maximale Breite für Spaltenwerte in REPL-Eager-Evaluation wird vor dem Abschneiden angezeigt. |
1.0.0 |
|
|
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 |
|
|
Zeitzone der Sitzung, die für Zeitstempelvorgänge verwendet wird. Synchronisiert mit der Snowflake-Sitzung über |
1.0.0 |
|
|
Standard-Datenquellenformat für Lese-/Schreibvorgänge, wenn Format nicht explizit angegeben ist. |
1.0.0 |
|
|
Standard-Zeitstempeltyp für Zeitstempelvorgänge. Werte: |
1.0.0 |
|
|
Bei |
1.0.0 |
Unterstützte Snowpark Connect for Spark-Eigenschaften¶
Benutzerdefinierte Konfigurationseigenschaften für Snowpark Connect for Spark.
Name der Eigenschaft |
Standard |
Bedeutung |
Seit |
|---|---|---|---|
|
(–) |
Azure SAS-Token für die Blob Storage-Authentifizierung. Wird verwendet, wenn in Azure Blob Storage-Speicherorte gelesen oder geschrieben werden. |
1.0.0 |
|
(–) |
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 |
|
|
Bei |
1.0.0 |
|
|
Alternative Konfiguration zum Generieren von Parquet-Metadatendateien mit Zusammenfassungen. Dies oder |
1.4.0 |
|
|
Bei |
1.0.0 |
|
|
Bei |
1.0.0 |
|
|
Lebensdauer von Abfrage-Cache-Einträgen in Sekunden. Reduziert wiederholte Schemasuchvorgänge. |
1.0.0 |
|
|
Bei |
1.0.0 |
|
|
Bei |
1.7.0 |
|
(–) |
Name des externen Snowflake-Volumes für Vorgänge mit der Iceberg-Tabelle. |
1.0.0 |
|
|
Steuert die Umwandlung von Dezimal- in Ganzzahltypen. Werte: |
1.7.0 |
|
|
Steuert die verwendete Scala-Version (unterstützt |
1.7.0 |
|
(–) |
Speicherortpfad der externen Tabelle für partitionierte Schreibvorgänge. |
1.4.0 |
|
|
Bei |
1.0.1 |
|
(–) |
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 |
|
(–) |
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 |
|
(–) |
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 |
|
(–) |
Durch Kommas getrennte Liste von Python-Paketen, die bei der Registrierung von UDFs eingebunden werden sollen. |
1.0.0 |
|
|
Bei |
1.0.0 |
|
|
Schreibgeschützt. Gibt die aktuelle Snowpark Connect for Spark-Version zurück. |
1.0.0 |
|
|
Verwenden von doppelten Spaltennamen in Ansichten. Werte: |
1.0.0 |
|
|
Bei |
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
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:
bit_get/getbit– Explizite Verwendung der Snowflake-GetBit-Funktion
hash– Explizite Verwendung der Snowflake-Hash-Funktion
md5– Explizite Verwendung der Snowflake-md5-FunktionUmbenennen von Tabellenspalten – Ermöglicht das Ändern von Tabellenspalten
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 |
|
10 |
|
5 |
|
3 |
|
Andere |
|
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()
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()
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';
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()
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'
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_2usw. 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()
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';
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()
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.
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.