Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O Azure Databricks fornece um conector Snowflake no Databricks Runtime para dar suporte à leitura e gravação de dados do Snowflake.
Importante
A documentação da federação de consulta herdada foi desativada e pode não ser atualizada. As configurações mencionadas neste conteúdo não são oficialmente endossadas ou testadas pelo Databricks. Se Federação Lakehouse der suporte ao seu banco de dados de origem, Databricks recomenda usá-lo.
Consultar uma tabela Snowflake no Azure Databricks
Você pode configurar uma conexão com o Snowflake e, em seguida, consultar dados. Antes de começar, verifique em qual versão do Databricks Runtime seu cluster é executado. O código a seguir fornece sintaxe de exemplo em Python, SQL e Scala.
Pitão
# 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 (linguagem de programação)
# 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: Conector Snowflake para Spark
Os notebooks a seguir fornecem exemplos simples sobre como gravar e ler dados no Snowflake. Consulte Snowflake Connector para Spark para obter mais detalhes.
Dica
Evite expor seu nome de usuário e senha Snowflake em cadernos usando Segredos, que são demonstrados nos cadernos.
Bloco de anotações do Python do Floco de Neve
Exemplo de bloco de anotações: salvar resultados de treinamento de modelo no Snowflake
O bloco de anotações a seguir percorre as práticas recomendadas para usar o Snowflake Connector para Spark. Ele grava dados no Snowflake, usa Snowflake para alguma manipulação básica de dados, treina um modelo de machine learning no Azure Databricks e grava os resultados de volta para Snowflake.
Armazenar os resultados de treinamento de ML no notebook Snowflake
Perguntas frequentes (FAQ)
Por que minhas colunas do DataFrame do Spark não aparecem na mesma ordem em Snowflake?
O Conector Snowflake para Spark não respeita a ordem das colunas na tabela que está sendo escrita; você deve especificar o mapeamento explicitamente entre as colunas do DataFrame e do Snowflake. Para especificar esse mapeamento, use o parâmetro columnmap.
Por que os INTEGER
dados gravados em Snowflake são lidos de volta como DECIMAL
?
Snowflake representa todos os INTEGER
tipos como NUMBER
, o que pode causar uma alteração no tipo de dados ao gravar dados e ler dados do Snowflake. Por exemplo, INTEGER
os dados podem ser convertidos DECIMAL
ao gravar em Snowflake, porque INTEGER
são DECIMAL
semanticamente equivalentes em Snowflake (consulte Tipos de Dados Numéricos snowflake).
Por que os campos no meu esquema de tabela floco de neve estão sempre em letras maiúsculas?
Snowflake usa campos maiúsculos por padrão, o que significa que o esquema de tabela é convertido em maiúsculas.