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.

Feljegyzés

A Snowflake-adatok lekérdezéseinek kezeléséhez a Lakehouse Federationt érdemes előnyben részesíteni. Lásd : Mi az a Lakehouse Federation.

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 Csatlakozás or 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: A Spark Csatlakozás or használata. Az összes konfigurációs beállításhoz lásd a Csatlakozás or konfigurációs beállításainak beállítását.

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

Jegyzetfüzet beszerzése

Példa jegyzetfüzetre: Modell betanítási eredményeinek mentése a Snowflake-be

Az alábbi jegyzetfüzet bemutatja a Spark snowflake Csatlakozás or 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

Jegyzetfüzet beszerzése

Gyakori kérdések (GYIK)

Miért nem jelennek meg a Spark DataFrame-oszlopaim ugyanabban a sorrendben a Snowflake-ben?

A Spark Snowflake Csatlakozás or nem tartja tiszteletben a táblázat oszlopainak sorrendjét; explicit módon meg kell adnia a DataFrame és a Snowflake oszlopok közötti megfeleltetést. A leképezés megadásához használja az oszloptérkép paramétert.

Miért olvashatók vissza DECIMALa INTEGER Snowflake-be írt adatok?

A hópehely minden INTEGER típust NUMBERjelö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 INTEGERDECIMAL 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.