Adatok olvasása és írása a Snowflake-ből
Az Azure Databricks egy Snowflake-összekötőt biztosít a Databricks Runtime-ban, amely támogatja a Snowflake-adatok olvasását és írását.
Fontos
A cikkben ismertetett konfigurációk kísérleti jellegűek. A kísérleti funkciókat a Databricks jelenleg is biztosítja, és a Databricks nem támogatja az ügyfél technikai támogatásával. A lekérdezések összevonásának teljes körű támogatásához inkább Lakehouse Federationkell használnia, amely lehetővé teszi, hogy az Azure Databricks-felhasználók kihasználhassák a Unity Catalog szintaxisát és adatszabályozási eszközeit.
Snowflake-tábla lekérdezése az Azure Databricksben
Konfigurálhat egy kapcsolatot a Snowflake-hez, majd lekérdezheti az adatokat. Mielőtt hozzákezdene, ellenőrizze, hogy a Databricks Runtime melyik verzióján fut a fürt. Az alábbi kód a Python, az SQL és a Scala példaszintaxisát tartalmazza.
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()
Jegyzetfüzet-példa: Snowflake Connector for Spark
Az alábbi jegyzetfüzetek egyszerű példákat nyújtanak arra, hogyan írhat adatokat a Snowflake-be, és hogyan olvashatja be az adatokat. További részletekért lásd: Snowflake Connector for Spark .
Tipp.
Kerülje a Snowflake-felhasználónevét és jelszavát a jegyzetfüzetekben a titkos kódok használatával, amelyek a jegyzetfüzetekben láthatóak.
Snowflake Python-jegyzetfüzet
Példa jegyzetfüzetre: Modell betanítási eredményeinek mentése a Snowflake-be
Az alábbi jegyzetfüzet bemutatja a Snowflake Connector for Spark használatának ajánlott eljárásait. Adatokat ír a Snowflake-be, a Snowflake-t használja néhány alapvető adatmanipulációhoz, betanít egy gépi tanulási modellt az Azure Databricksben, és visszaírja az eredményeket a Snowflake-be.
Ml-betanítási eredmények tárolása Snowflake notebookban
Gyakori kérdések (GYIK)
Miért nem jelennek meg a Spark DataFrame-oszlopaim ugyanabban a sorrendben a Snowflake-ben?
A Spark Snowflake-összekötője nem veszi figyelembe a táblázat oszlopainak sorrendjét; explicit módon meg kell adnia a DataFrame és a Snowflake oszlopok közötti hozzárendelést. A leképezés megadásához használja az oszloptérkép paramétert.
Miért olvashatók vissza INTEGER
a DECIMAL
Snowflake-be írt adatok?
A hópehely minden INTEGER
típust NUMBER
jelöl, ami változást okozhat az adattípusban, amikor adatokat ír be és olvas be a Snowflake-ból. Az adatok például INTEGER
a Snowflake-be íráskor konvertálhatók DECIMAL
, mert INTEGER
DECIMAL
szemantikailag egyenértékűek a Snowflake-ben (lásd : Snowflake Numerikus adattípusok).
Miért mindig nagybetűsek a Snowflake táblasémában lévő mezők?
A Snowflake alapértelmezés szerint nagybetűket használ, ami azt jelenti, hogy a táblaséma nagybetűssé alakul.