قراءة وكتابة البيانات من Snowflake

يوفر Azure Databricks موصل Snowflake في وقت تشغيل Databricks لدعم قراءة البيانات وكتابتها من Snowflake.

إشعار

قد تفضل Lakehouse Federation لإدارة الاستعلامات على بيانات Snowflake. انظر ما هو اتحاد ليكهاوس.

الاستعلام عن جدول Snowflake في Azure Databricks

يمكنك تكوين اتصال ب Snowflake ثم الاستعلام عن البيانات. قبل البدء، تحقق من إصدار Databricks Runtime الذي تعمل عليه مجموعتك. توفر التعليمات البرمجية التالية مثالا لبناء الجملة في Python وSQL وSc 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()

مثال دفتر الملاحظات: Snowflake الاتصال or ل Spark

توفر دفاتر الملاحظات التالية أمثلة بسيطة حول كيفية كتابة البيانات وقراءة البيانات من Snowflake. راجع استخدام الاتصال Spark لمزيد من التفاصيل. على وجه الخصوص، راجع تعيين خيارات التكوين الاتصال or لكافة خيارات التكوين.

تلميح

تجنب الكشف عن اسم مستخدم Snowflake وكلمة المرور في دفاتر الملاحظات باستخدام الأسرار، والتي تظهر في دفاتر الملاحظات.

دفتر ملاحظات Snowflake Python

الحصول على دفتر الملاحظات

مثال دفتر الملاحظات: حفظ نتائج تدريب النموذج على Snowflake

يستعرض دفتر الملاحظات التالي أفضل الممارسات لاستخدام الاتصال Snowflake ل Spark. يكتب البيانات إلى Snowflake، ويستخدم Snowflake لبعض معالجة البيانات الأساسية، ويدرب نموذج التعلم الآلي في Azure Databricks، ويكتب النتائج مرة أخرى إلى Snowflake.

تخزين نتائج التدريب على التعلم الآلي في دفتر ملاحظات Snowflake

الحصول على دفتر الملاحظات

الأسئلة الشائعة (FAQ)

لماذا لا تظهر أعمدة Spark DataFrame بنفس الترتيب في Snowflake؟

لا يحترم الاتصال Snowflake ل Spark ترتيب الأعمدة في الجدول الذي تتم كتابته؛ يجب عليك تحديد التعيين بين أعمدة DataFrame و Snowflake بشكل صريح. لتحديد هذا التعيين، استخدم المعلمة columnmap.

لماذا تتم INTEGER قراءة البيانات المكتوبة إلى Snowflake مرة أخرى ك DECIMAL؟

يمثل Snowflake جميع INTEGER الأنواع ك NUMBER، مما يمكن أن يسبب تغييرا في نوع البيانات عند كتابة البيانات إلى البيانات وقراءتها من Snowflake. على سبيل المثال، INTEGER يمكن تحويل البيانات إلى DECIMAL عند الكتابة إلى Snowflake، لأن INTEGER و DECIMAL مكافئين دلاليا في Snowflake (راجع Snowflake Numeric Data Types).

لماذا تكون الحقول في مخطط جدول Snowflake دائما كبيرة؟

يستخدم Snowflake الحقول الكبيرة بشكل افتراضي، ما يعني أن مخطط الجدول يتم تحويله إلى أحرف كبيرة.