تشغيل الاستعلامات الموحدة على Snowflake
توضح هذه المقالة كيفية إعداد Lakehouse Federation لتشغيل الاستعلامات الموحدة على بيانات Snowflake التي لا تديرها Azure Databricks. لمعرفة المزيد حول Lakehouse Federation، راجع ما هو Lakehouse Federation؟.
للاتصال بقاعدة بيانات Snowflake باستخدام Lakehouse Federation، يجب عليك إنشاء ما يلي في مخزن metastore لكتالوج Azure Databricks Unity:
- اتصال بقاعدة بيانات Snowflake.
- كتالوج خارجي يعكس قاعدة بيانات Snowflake في كتالوج Unity بحيث يمكنك استخدام بناء جملة استعلام كتالوج Unity وأدوات إدارة البيانات لإدارة وصول مستخدم Azure Databricks إلى قاعدة البيانات.
قبل البدء
متطلبات مساحة العمل:
- مساحة العمل ممكنة ل Unity Catalog.
متطلبات الحساب:
- اتصال الشبكة من نظام مجموعة Databricks Runtime أو مستودع SQL إلى أنظمة قاعدة البيانات الهدف. راجع توصيات الشبكات ل Lakehouse Federation.
- يجب أن تستخدم مجموعات Azure Databricks Databricks وقت تشغيل Databricks 13.3 LTS أو أعلى ووضع الوصول المشترك أو أحادي المستخدم.
- يجب أن تكون مستودعات SQL Pro أو Serverless ويجب أن تستخدم 2023.40 أو أعلى.
الأذونات المطلوبة:
- لإنشاء اتصال، يجب أن تكون مسؤول metastore أو مستخدما لديه
CREATE CONNECTION
الامتياز على مخزن بيانات تعريف كتالوج Unity المرفق بمساحة العمل. - لإنشاء كتالوج خارجي، يجب أن يكون لديك
CREATE CATALOG
الإذن على metastore وأن تكون إما مالك الاتصال أو أن يكون لديكCREATE FOREIGN CATALOG
امتياز على الاتصال.
يتم تحديد متطلبات إذن إضافية في كل مقطع يستند إلى المهام التالية.
- إذا كنت تخطط للمصادقة باستخدام OAuth، قم بإنشاء تكامل أمان في وحدة تحكم Snowflake. راجع القسم التالي للحصول على التفاصيل.
(اختياري) إنشاء تكامل أمان في وحدة تحكم Snowflake
إذا كنت ترغب في المصادقة باستخدام OAuth، فاتبع هذه الخطوة قبل إنشاء اتصال Snowflake. للمصادقة باستخدام اسم مستخدم وكلمة مرور بدلا من ذلك، تخطي هذا القسم.
إشعار
يتم دعم تكامل OAuth الأصلي ل Snowflake فقط. عمليات تكامل OAuth الخارجية مثل Okta أو معرف Microsoft Entra غير مدعومة.
في وحدة تحكم Snowflake، قم بتشغيل CREATE SECURITY INTEGRATION
. استبدل القيم التالية:
<integration-name>
: اسم فريد لتكامل OAuth الخاص بك.<workspace-url>
: عنوان URL لمساحة عمل Azure Databricks. يجب تعيينOAUTH_REDIRECT_URI
إلىhttps://<workspace-url>/login/oauth/snowflake.html
، حيث<workspace-url>
هو عنوان URL الفريد لمساحة عمل Azure Databricks حيث ستقوم بإنشاء اتصال Snowflake.<duration-in-seconds>
: طول الوقت لتحديث الرموز المميزة.هام
OAUTH_REFRESH_TOKEN_VALIDITY
هو حقل مخصص يتم تعيينه إلى 90 يوما بشكل افتراضي. بعد انتهاء صلاحية الرمز المميز للتحديث، يجب إعادة مصادقة الاتصال. تعيين الحقل إلى طول زمني معقول.
CREATE SECURITY INTEGRATION <integration-name>
TYPE = oauth
ENABLED = true
OAUTH_CLIENT = custom
OAUTH_CLIENT_TYPE = 'CONFIDENTIAL'
OAUTH_REDIRECT_URI = 'https://<workspace-url>/login/oauth/snowflake.html'
OAUTH_ISSUE_REFRESH_TOKENS = TRUE
OAUTH_REFRESH_TOKEN_VALIDITY = <duration-in-seconds>
OAUTH_ENFORCE_PKCE = TRUE;
إنشاء اتصال
يحدد الاتصال مسارا وبيانات اعتماد للوصول إلى نظام قاعدة بيانات خارجي. لإنشاء اتصال، يمكنك استخدام مستكشف الكتالوج CREATE CONNECTION
أو الأمر SQL في دفتر ملاحظات Azure Databricks أو محرر استعلام Databricks SQL.
إشعار
يمكنك أيضا استخدام Databricks REST API أو Databricks CLI لإنشاء اتصال. راجع أوامر POST /api/2.1/unity-catalog/connections وUnity Catalog.
الأذونات المطلوبة: مسؤول Metastore أو المستخدم الذي يتمتع بالامتياز CREATE CONNECTION
.
مستكشف الكتالوج
في مساحة عمل Azure Databricks، انقر فوق كتالوج.
في أعلى جزء الكتالوج، انقر فوق الأيقونة إضافة وحدد إضافة اتصال من القائمة.
بدلا من ذلك، من صفحة الوصول السريع، انقر فوق الزر بيانات > خارجية، وانتقل إلى علامة التبويب اتصالات ، وانقر فوق إنشاء اتصال.
أدخل اسم اتصال سهل الاستخدام.
حدد نوع اتصال Snowflake.
أدخل خصائص الاتصال التالية لمستودع Snowflake.
- نوع المصادقة:
OAuth
أوUsername and password
- المضيف: على سبيل المثال،
snowflake-demo.east-us-2.azure.snowflakecomputing.com
- المنفذ: على سبيل المثال،
443
- مستودع Snowflake: على سبيل المثال،
my-snowflake-warehouse
- المستخدم: على سبيل المثال،
snowflake-user
- (OAuth) معرف العميل: في وحدة تحكم Snowflake، قم بتشغيل
SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('<security_integration_name>')
لاسترداد معرف العميل لتكامل الأمان الخاص بك. - (OAuth): سر العميل: في وحدة تحكم Snowflake، قم بتشغيل
SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('<security_integration_name>')
لاسترداد سر العميل لتكامل الأمان الخاص بك. - (OAuth) نطاق العميل:
refresh_token session:role:<role-name>
. حدد دور Snowflake لاستخدامه في<role-name>
. - (اسم المستخدم وكلمة المرور) كلمة المرور: على سبيل المثال،
password123
(OAuth) تتم مطالبتك بتسجيل الدخول إلى Snowflake باستخدام بيانات اعتماد OAuth.
- نوع المصادقة:
(اختياري) انقر فوق اختبار الاتصال للتأكد من أنه يعمل.
(اختياري) إضافة تعليق.
انقر فوق Create.
SQL
قم بتشغيل الأمر التالي في دفتر ملاحظات أو محرر استعلام Databricks SQL.
CREATE CONNECTION <connection-name> TYPE snowflake
OPTIONS (
host '<hostname>',
port '<port>',
sfWarehouse '<warehouse-name>',
user '<user>',
password '<password>'
);
نوصي باستخدام أسرار Azure Databricks بدلا من سلاسل النص العادي للقيم الحساسة مثل بيانات الاعتماد. على سبيل المثال:
CREATE CONNECTION <connection-name> TYPE snowflake
OPTIONS (
host '<hostname>',
port '<port>',
sfWarehouse '<warehouse-name>',
user secret ('<secret-scope>','<secret-key-user>'),
password secret ('<secret-scope>','<secret-key-password>')
)
للحصول على معلومات حول إعداد البيانات السرية، راجع إدارة البيانات السرية.
إنشاء كتالوج خارجي
يعكس الكتالوج الخارجي قاعدة بيانات في نظام بيانات خارجي بحيث يمكنك الاستعلام عن الوصول إلى البيانات وإدارتها في قاعدة البيانات هذه باستخدام Azure Databricks وUnity Catalog. لإنشاء كتالوج خارجي، يمكنك استخدام اتصال بمصدر البيانات الذي تم تعريفه بالفعل.
لإنشاء كتالوج خارجي، يمكنك استخدام مستكشف الكتالوج CREATE FOREIGN CATALOG
أو أمر SQL في دفتر ملاحظات Azure Databricks أو محرر استعلام SQL.
إشعار
يمكنك أيضا استخدام Databricks REST API أو Databricks CLI لإنشاء كتالوج. راجع أوامر POST /api/2.1/unity-catalog/catalogs وUnity Catalog.
الأذونات المطلوبة: CREATE CATALOG
إذن على metastore وإما ملكية الاتصال أو الامتياز CREATE FOREIGN CATALOG
على الاتصال.
مستكشف الكتالوج
في مساحة عمل Azure Databricks، انقر فوق كتالوج لفتح مستكشف الكتالوج.
في أعلى جزء الكتالوج، انقر فوق الأيقونة إضافة وحدد إضافة كتالوج من القائمة.
بدلا من ذلك، من صفحة الوصول السريع، انقر فوق الزر كتالوجات ، ثم انقر فوق الزر إنشاء كتالوج .
اتبع الإرشادات لإنشاء كتالوجات خارجية في إنشاء كتالوجات.
SQL
قم بتشغيل أمر SQL التالي في دفتر ملاحظات أو محرر استعلام SQL. العناصر الموجودة بين قوسين اختيارية. استبدل قيم العنصر النائب:
<catalog-name>
: اسم الكتالوج في Azure Databricks.<connection-name>
: كائن الاتصال الذي يحدد مصدر البيانات والمسار وبيانات اعتماد الوصول.<database-name>
: اسم قاعدة البيانات التي تريد عكسها ككتالوج في Azure Databricks.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (database '<database-name>');
معرفات قاعدة البيانات الحساسة لحالة الأحرف
يتم database
تعيين حقل الكتالوج الخارجي إلى معرف قاعدة بيانات Snowflake. إذا لم يكن معرف قاعدة بيانات Snowflake حساسا لحالة الأحرف، يتم الاحتفاظ بالغلاف الذي تستخدمه في الكتالوج <database-name>
الخارجي. ومع ذلك، إذا كان معرف قاعدة بيانات Snowflake حساسا لحالة الأحرف، يجب تضمين الكتالوج <database-name>
الخارجي في علامات اقتباس مزدوجة للحفاظ على الحالة.
على سبيل المثال:
database
تم تحويله إلىDATABASE
"database"
تم تحويله إلىdatabase
"database"""
تم تحويله إلىdatabase"
للهروب من اقتباس مزدوج، استخدم اقتباسا مزدوجا آخر.
"database""
ينتج عنه خطأ لأن عرض الأسعار المزدوج لم يتم تخطيه بشكل صحيح.
لمزيد من المعلومات، راجع متطلبات المعرف في وثائق Snowflake.
عمليات الدفع المدعومة
يتم دعم القوائم المنبثقة التالية:
- عوامل التصفية
- التوقعات
- الحد
- عمليات الربط
- التجميعات (المتوسط، Corr، CovPopulation، CovSample، Count، Max، Min، StddevPop، StddevSamp، Sum، VariancePop، VarianceSamp)
- دالات (دالات السلسلة والدالات الرياضية والبيانات ودالات الطابع الزمني والطوابع الزمنية وغيرها من الدالات المتنوعة، مثل الاسم المستعار، والصب، وSortOrder)
- وظائف Windows (DenseRank، Rank، RowNumber)
- الفرز
تعيينات نوع البيانات
عند القراءة من Snowflake إلى Spark، يتم تعيين أنواع البيانات على النحو التالي:
نوع البلورة الثلجية | نوع Spark |
---|---|
عشري، رقم، رقمي | نوع عشري |
bigint, byteint, int, integer, smallint, tinyint | IntegerType |
float, float4, float8 | FloatType |
مزدوج، دقة مزدوجة، حقيقي | DoubleType |
حرف، حرف، سلسلة، نص، وقت، varchar | StringType |
binary | نوع ثنائي |
boolean | BooleanType |
date | DateType |
التاريخ والوقت والطوابع الزمنية timestamp_ltz timestamp_ntz timestamp_tz | نوع الطابع الزمني |
قيود OAuth
فيما يلي قيود دعم OAuth:
- يجب أن تكون نقطة نهاية Snowflake OAuth قابلة للوصول من عناوين IP لمستوى تحكم Databricks. راجع الصادر من وحدة التحكم Azure Databricks. يدعم Snowflake تكوين نهج الشبكة على مستوى تكامل الأمان، والذي يسمح بنهج شبكة منفصلة تمكن الاتصال المباشر من وحدة التحكم Databricks إلى نقطة نهاية OAuth للحصول على التخويل.
- استخدام الوكيل ومضيف الوكيل ومنفذ الوكيل وخيارات تكوين دور Snowflake غير مدعومة. حدد دور Snowflake كجزء من نطاق OAuth.
الموارد الإضافية
- تكوين Snowflake OAuth للعملاء المخصصين في وثائق Snowflake
- مرجع SQL: إنشاء تكامل الأمان (Snowflake OAuth) في وثائق Snowflake