Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Usługa Azure Databricks udostępnia łącznik Snowflake w środowisku Databricks Runtime do obsługi odczytywania i zapisywania danych z usługi Snowflake.
Ważne
Dokumentacja starszej wersji federacji zapytań została wycofana i może nie być aktualizowana. Konfiguracje wymienione w tej zawartości nie są oficjalnie zatwierdzone ani przetestowane przez usługę Databricks. Jeśli Lakehouse Federation obsługuje twoją źródłową bazę danych, Databricks zaleca użycie właśnie tej usługi.
Wykonywanie zapytań względem tabeli Snowflake w usłudze Azure Databricks
Możesz skonfigurować połączenie z usługą Snowflake, a następnie wykonywać zapytania dotyczące danych. Przed rozpoczęciem sprawdź, w której wersji środowiska Databricks Runtime działa klaster. Poniższy kod zawiera przykładowe składnie w językach Python, SQL i 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;
Skala
# 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()
Przykład notebooka: Snowflake Connector for Spark
Poniższe notesy zawierają proste przykłady sposobu zapisywania danych i odczytywania danych z usługi Snowflake. Aby uzyskać więcej informacji, zobacz Snowflake Connector for Spark (Łącznik snowflake dla platformy Spark ).
Wskazówka
Unikaj uwidaczniania nazwy użytkownika i hasła usługi Snowflake w notesach przy użyciu wpisów tajnych, które przedstawiono w notesach.
Notatnik Snowflake Python
Przykład notesu: Zapisywanie wyników trenowania modelu w usłudze Snowflake
W poniższym notesie przedstawiono najlepsze rozwiązania dotyczące używania łącznika snowflake dla platformy Spark. Zapisuje dane w usłudze Snowflake, używa rozwiązania Snowflake do pewnych podstawowych manipulacji danymi, trenuje model uczenia maszynowego w usłudze Azure Databricks i zapisuje wyniki z powrotem do usługi Snowflake.
Przechowywanie wyników trenowania uczenia maszynowego w notesie Snowflake
Najczęściej zadawane pytania (FAQ)
Dlaczego kolumny ramki danych platformy Spark nie są wyświetlane w tej samej kolejności w usłudze Snowflake?
Łącznik Snowflake dla platformy Spark nie uwzględnia kolejności kolumn w tabeli, do których są zapisywane dane; należy jednoznacznie określić mapowanie między kolumnami DataFrame a kolumnami w Snowflake. Aby określić to mapowanie, użyj parametru columnmap.
INTEGER Dlaczego dane zapisywane w usłudze Snowflake są odczytywane jako DECIMAL?
Snowflake reprezentuje wszystkie INTEGER typy jako NUMBER, co może spowodować zmianę typu danych podczas zapisywania i odczytywania informacji z Snowflake. Na przykład INTEGER dane można przekonwertować na DECIMAL podczas zapisywania w usłudze Snowflake, ponieważ INTEGER i DECIMAL są semantycznie równoważne w usłudze Snowflake (zobacz Snowflake Numeryczne typy danych).
Dlaczego pola w schemacie tabeli Snowflake są zawsze pisane wielkimi literami?
Snowflake domyślnie używa wielkich pól, co oznacza, że schemat tabeli jest konwertowany na wielkie litery.