Compartir vía


Lectura y escritura de datos desde Snowflake

Azure Databricks proporciona un conector de Snowflake en Databricks Runtime para admitir la lectura y escritura de datos de Snowflake.

Importante

La documentación de federación de consultas heredada ha quedado obsoleta y ya no se actualizará. Las configuraciones mencionadas en este contenido no están aprobadas o probadas oficialmente por Databricks. Si Lakehouse Federation admite la base de datos de origen, Databricks recomienda usarlo en su lugar.

Consulta de una tabla de Snowflake en Azure Databricks

Puede configurar una conexión a Snowflake y, a continuación, consultar los datos. Antes de empezar, compruebe en qué versión de Databricks Runtime se ejecuta el clúster. El código siguiente proporciona sintaxis de ejemplo en Python, SQL y Scala.

Pitón


# 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()

Ejemplo de cuaderno: conector de Snowflake para Spark

En los cuadernos siguientes se proporcionan ejemplos sencillos de cómo escribir datos en y leer datos de Snowflake. Consulte Snowflake Connector for Spark (Conector de Snowflake para Spark ) para obtener más información.

Sugerencia

Evite exponer el nombre de usuario y la contraseña de Snowflake en cuadernos mediante secretos, que se muestran en los cuadernos.

Cuaderno de Python de Snowflake

Obtener el cuaderno

Ejemplo de cuaderno: Guardar los resultados de entrenamiento del modelo en Snowflake

En el cuaderno siguiente se describen los procedimientos recomendados para usar el conector snowflake para Spark. Escribe datos en Snowflake, usa Snowflake para cierta manipulación de datos básica, entrena un modelo de aprendizaje automático en Azure Databricks y escribe los resultados en Snowflake.

Almacenar los resultados del entrenamiento de ML en el cuaderno de Snowflake

Obtener el cuaderno

Preguntas más frecuentes (FAQ)

¿Por qué no aparecen mis columnas dataFrame de Spark en el mismo orden en Snowflake?

El Conector Snowflake para Spark no respeta el orden de las columnas de la tabla a la que se escribe; es necesario especificar explícitamente la asignación entre las columnas del DataFrame y las columnas de Snowflake. Para especificar esta asignación, use el parámetro columnmap.

¿Por qué los datos INTEGER escritos en Snowflake se leen como DECIMAL?

Snowflake representa todos los INTEGER tipos como NUMBER, lo que puede provocar un cambio en el tipo de datos al escribir y leer datos de Snowflake. Por ejemplo, INTEGER los datos se pueden convertir a DECIMAL al escribir en Snowflake, ya que INTEGER y DECIMAL son semánticamente equivalentes en Snowflake (consulte Tipos de datos numéricos de Snowflake).

¿Por qué los campos del esquema de tabla de Snowflake siempre están en mayúsculas?

Snowflake usa campos en mayúsculas de forma predeterminada, lo que significa que el esquema de la tabla se convierte en mayúsculas.