Dela via


Läsa och skriva data från Snowflake

Azure Databricks tillhandahåller en Snowflake-anslutning i Databricks Runtime för att stödja läsning och skrivning av data från Snowflake.

Kommentar

Du kanske föredrar Lakehouse Federation för att hantera frågor om Snowflake-data. Se Vad är Lakehouse Federation.

Fråga en Snowflake-tabell i Azure Databricks

Du kan konfigurera en anslutning till Snowflake och sedan fråga efter data. Innan du börjar kontrollerar du vilken version av Databricks Runtime klustret körs på. Följande kod innehåller exempelsyntax i Python, SQL och 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()

Notebook-exempel: Snowflake Anslut or för Spark

Följande notebook-filer innehåller enkla exempel på hur du skriver data till och läser data från Snowflake. Mer information finns i Använda Spark Anslut or. Mer information finns i Ange konfigurationsalternativ för Anslut eller för alla konfigurationsalternativ.

Dricks

Undvik att exponera ditt Användarnamn och lösenord för Snowflake i notebook-filer med hjälp av Hemligheter, som visas i notebook-filerna.

Snowflake Python Notebook

Hämta notebook-fil

Notebook-exempel: Spara modellträningsresultat till Snowflake

Följande notebook-fil går igenom metodtips för att använda Snowflake-Anslut eller för Spark. Den skriver data till Snowflake, använder Snowflake för viss grundläggande datamanipulering, tränar en maskininlärningsmodell i Azure Databricks och skriver resultatet tillbaka till Snowflake.

Lagra ML-utbildningsresultat i Snowflake Notebook

Hämta notebook-fil

Vanliga frågor och svar

Varför visas inte mina Spark DataFrame-kolumner i samma ordning i Snowflake?

Snowflake-Anslut or för Spark respekterar inte ordningen på kolumnerna i tabellen som skrivs till. Du måste uttryckligen ange mappningen mellan DataFrame- och Snowflake-kolumner. Om du vill ange den här mappningen använder du parametern columnmap.

Varför skrivs INTEGER data till Snowflake tillbaka som DECIMAL?

Snowflake representerar alla INTEGER typer som NUMBER, vilket kan orsaka en ändring i datatypen när du skriver data till och läser data från Snowflake. Data kan till exempel konverteras till DECIMAL när du skriver till Snowflake, eftersom INTEGER och DECIMAL är semantiskt likvärdiga i Snowflake (se Snowflake Numeriska datatyper). INTEGER

Varför är fälten i mitt Snowflake-tabellschema alltid versaler?

Snowflake använder versaler som standard, vilket innebär att tabellschemat konverteras till versaler.