Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Azure Databricks stellt einen Snowflake-Connector in der Databricks-Runtime bereit, um das Lesen und Schreiben von Daten aus Snowflake zu unterstützen.
Von Bedeutung
Die Legacy-Abfrageverbunddokumentation wurde eingestellt und kann nicht aktualisiert werden. Die in diesem Inhalt genannten Konfigurationen werden nicht offiziell von Databricks unterstützt oder getestet. Wenn Lakehouse Federation Ihre Quelldatenbank unterstützt, empfiehlt Databricks stattdessen die Verwendung.
Abfragen einer Snowflake-Tabelle in Azure Databricks
Sie können eine Verbindung mit Snowflake konfigurieren und dann Daten abfragen. Bevor Sie beginnen, überprüfen Sie, auf welcher Version von Databricks Runtime Ihr Cluster ausgeführt wird. Der folgende Code enthält Beispielsyntax in Python, SQL und Scala.
Python
# The following example applies to Databricks Runtime 11.3 LTS and above.
snowflake_table = (spark.read
.format("snowflake")
.option("host", "hostname")
.option("port", "port") # Optional - will use default port 443 if not specified.
.option("user", "username")
.option("password", "password")
.option("sfWarehouse", "warehouse_name")
.option("database", "database_name")
.option("schema", "schema_name") # Optional - will use default schema "public" if not specified.
.option("dbtable", "table_name")
.load()
)
# The following example applies to Databricks Runtime 10.4 and below.
snowflake_table = (spark.read
.format("snowflake")
.option("dbtable", table_name)
.option("sfUrl", database_host_url)
.option("sfUser", username)
.option("sfPassword", password)
.option("sfDatabase", database_name)
.option("sfSchema", schema_name)
.option("sfWarehouse", warehouse_name)
.load()
)
SQL
/* The following example applies to Databricks Runtime 11.3 LTS and above. */
DROP TABLE IF EXISTS snowflake_table;
CREATE TABLE snowflake_table
USING snowflake
OPTIONS (
host '<hostname>',
port '<port>', /* Optional - will use default port 443 if not specified. */
user '<username>',
password '<password>',
sfWarehouse '<warehouse_name>',
database '<database-name>',
schema '<schema-name>', /* Optional - will use default schema "public" if not specified. */
dbtable '<table-name>'
);
SELECT * FROM snowflake_table;
/* The following example applies to Databricks Runtime 10.4 LTS and below. */
DROP TABLE IF EXISTS snowflake_table;
CREATE TABLE snowflake_table
USING snowflake
OPTIONS (
dbtable '<table-name>',
sfUrl '<database-host-url>',
sfUser '<username>',
sfPassword '<password>',
sfDatabase '<database-name>',
sfSchema '<schema-name>',
sfWarehouse '<warehouse-name>'
);
SELECT * FROM snowflake_table;
Scala
# The following example applies to Databricks Runtime 11.3 LTS and above.
val snowflake_table = spark.read
.format("snowflake")
.option("host", "hostname")
.option("port", "port") /* Optional - will use default port 443 if not specified. */
.option("user", "username")
.option("password", "password")
.option("sfWarehouse", "warehouse_name")
.option("database", "database_name")
.option("schema", "schema_name") /* Optional - will use default schema "public" if not specified. */
.option("dbtable", "table_name")
.load()
# The following example applies to Databricks Runtime 10.4 and below.
val snowflake_table = spark.read
.format("snowflake")
.option("dbtable", table_name)
.option("sfUrl", database_host_url)
.option("sfUser", username)
.option("sfPassword", password)
.option("sfDatabase", database_name)
.option("sfSchema", schema_name)
.option("sfWarehouse", warehouse_name)
.load()
Notizbuchbeispiel: Snowflake Connector für Spark
Die folgenden Notizbücher enthalten einfache Beispiele zum Schreiben von Daten in und Lesen von Daten aus Snowflake. Weitere Details finden Sie unter Snowflake Connector für Spark .
Tipp
Vermeiden Sie, Ihren Snowflake-Benutzernamen und Ihr Kennwort in Notizbüchern unter Verwendung von Geheimnissen freizugeben, die in den Notizbüchern veranschaulicht werden.
Snowflake Python-Notizbuch
Notizbuchbeispiel: Speichern von Modellschulungsergebnissen in Snowflake
Im folgenden Notizbuch werden bewährte Methoden für die Verwendung des Snowflake-Connectors für Spark erläutert. Es schreibt Daten in Snowflake, verwendet Snowflake für einige grundlegende Datenmanipulation, trainiert ein Machine Learning-Modell in Azure Databricks und schreibt die Ergebnisse zurück in Snowflake.
Speichern Sie Ergebnisse des maschinellen Lernens im Snowflake Notebook
Häufig gestellte Fragen (FAQ)
Warum erscheinen meine Spark DataFrame-Spalten nicht in der gleichen Reihenfolge in Snowflake?
Der Snowflake Connector für Spark respektiert nicht die Reihenfolge der Spalten in der Tabelle, in die geschrieben wird; Sie müssen die Zuordnung zwischen DataFrame- und Snowflake-Spalten explizit angeben. Verwenden Sie den Columnmap-Parameter, um diese Zuordnung anzugeben.
Warum werden INTEGER
Daten beim Auslesen aus Snowflake als DECIMAL
zurückgegeben?
Snowflake stellt alle INTEGER
Typen dar als NUMBER
, was zu einer Änderung des Datentyps führen kann, wenn Sie Daten in Snowflake schreiben und lesen. Beispielsweise können INTEGER
Daten beim Schreiben in Snowflake in DECIMAL
konvertiert werden, da INTEGER
und DECIMAL
in Snowflake semantisch gleichwertig sind (siehe „Snowflake Numeric Data Types“).
Warum sind die Felder in meinem Snowflake-Tabellenschema immer in Großbuchstaben geschrieben?
Snowflake verwendet standardmäßig Großbuchstaben, was bedeutet, dass das Tabellenschema in Großbuchstaben konvertiert wird.