Aracılığıyla paylaş


Snowflake'ten veri okuma ve yazma

Azure Databricks, Snowflake'ten veri okumayı ve yazmayı desteklemek için Databricks Runtime'da bir Snowflake bağlayıcısı sağlar.

Not

Snowflake verileriyle ilgili sorguları yönetmek için Lakehouse Federasyonu'nı tercih edebilirsiniz. Bkz . Lakehouse Federasyonu nedir?

Azure Databricks'te Snowflake tablosunu sorgulama

Snowflake ile bağlantı yapılandırabilir ve ardından verileri sorgulayabilirsiniz. Başlamadan önce, kümenizin hangi Databricks Runtime sürümünde çalıştığını denetleyin. Aşağıdaki kod Python, SQL ve Scala'da örnek söz dizimi sağlar.

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

Not defteri örneği: Snowflake Bağlan veya Spark için

Aşağıdaki not defterleri, Snowflake'e veri yazma ve veri okuma hakkında basit örnekler sağlar. Daha fazla ayrıntı için bkz. Spark Bağlan or kullanma. Özellikle, tüm yapılandırma seçenekleri için Bağlan veya Yapılandırma Seçeneklerini Ayarlama bölümüne bakın.

İpucu

Not defterlerinde gösterilen Gizli Diziler'i kullanarak Snowflake kullanıcı adınızı ve parolanızı not defterlerinde göstermekten kaçının.

Snowflake Python not defteri

Not defterini alma

Not defteri örneği: Model eğitim sonuçlarını Snowflake'e kaydetme

Aşağıdaki not defteri, Spark için Snowflake Bağlan veya kullanımına yönelik en iyi yöntemleri gösterir. Snowflake'e veri yazar, bazı temel veri işleme işlemleri için Snowflake kullanır, Azure Databricks'te bir makine öğrenmesi modeli eğitir ve sonuçları Snowflake'e geri yazar.

ML eğitim sonuçlarını Snowflake not defterinde depolama

Not defterini alma

Sık sorulan sorular (SSS)

Spark DataFrame sütunlarım snowflake'de neden aynı sırada görünmüyor?

Spark için Snowflake Bağlan or, yazılmakta olan tablodaki sütunların sırasını dikkate almaz; DataFrame ile Snowflake sütunları arasındaki eşlemeyi açıkça belirtmeniz gerekir. Bu eşlemeyi belirtmek için columnmap parametresini kullanın.

INTEGER Snowflake'e yazılan veriler neden olarak DECIMALokunur?

Snowflake, tüm INTEGER türleri olarak NUMBERtemsil eder. Bu, Snowflake'e veri yazdığınızda ve snowflake'ten veri okuduğunuzda veri türünde değişikliğe neden olabilir. Örneğin, INTEGER Snowflake'e yazarken veriler snowflake'e DECIMAL dönüştürülebilir, çünkü INTEGER ve DECIMAL Snowflake'de eş değerdir (bkz . Snowflake Sayısal Veri Türleri).

Snowflake tablo şemamdaki alanlar neden her zaman büyük?

Snowflake varsayılan olarak büyük harf alanlarını kullanır ve bu da tablo şemasının büyük harfe dönüştürüldüğü anlamına gelir.