قراءة وكتابة البيانات من Snowflake
يوفر Azure Databricks موصل Snowflake في وقت تشغيل Databricks لدعم قراءة البيانات وكتابتها من Snowflake.
هام
التكوينات الموضحة في هذه المقالة تجريبية. يتم توفير الميزات التجريبية كما هي ولا تدعمها Databricks من خلال الدعم التقني للعملاء. للحصول على دعم اتحاد الاستعلام الكامل، يجب عليك بدلا من ذلك استخدام Lakehouse Federation، والذي يمكن مستخدمي Azure Databricks من الاستفادة من بناء جملة كتالوج Unity وأدوات إدارة البيانات.
الاستعلام عن جدول 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 Connector for Spark
توفر دفاتر الملاحظات التالية أمثلة بسيطة حول كيفية كتابة البيانات وقراءة البيانات من Snowflake. راجع موصل Snowflake ل Spark لمزيد من التفاصيل.
تلميح
تجنب الكشف عن اسم مستخدم 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 الحقول الكبيرة بشكل افتراضي، ما يعني أن مخطط الجدول يتم تحويله إلى أحرف كبيرة.