تشغيل الاستعلامات الموحدة على Microsoft SQL Server
توضح هذه المقالة كيفية إعداد Lakehouse Federation لتشغيل الاستعلامات الموحدة على بيانات SQL Server التي لا تتم إدارتها بواسطة Azure Databricks. لمعرفة المزيد حول Lakehouse Federation، راجع ما هو Lakehouse Federation؟.
للاتصال بقاعدة بيانات SQL Server باستخدام Lakehouse Federation، يجب عليك إنشاء ما يلي في مخزن metastore لكتالوج Azure Databricks Unity:
- اتصال بقاعدة بيانات SQL Server.
- كتالوج خارجي يعكس قاعدة بيانات SQL Server في كتالوج Unity بحيث يمكنك استخدام بناء جملة استعلام كتالوج Unity وأدوات إدارة البيانات لإدارة وصول مستخدم Azure Databricks إلى قاعدة البيانات.
يدعم Lakehouse Federation SQL Server وAzure SQL Database وAzure SQL Managed Instance.
قبل البدء
متطلبات مساحة العمل:
- مساحة العمل ممكنة ل 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، فسجل تطبيقا في معرف Microsoft Entra ل Azure Databricks. راجع القسم التالي للحصول على التفاصيل.
(اختياري) تسجيل تطبيق في معرف Microsoft Entra ل Azure Databricks
إذا كنت ترغب في المصادقة باستخدام OAuth، فاتبع هذه الخطوة قبل إنشاء اتصال SQL Server. للمصادقة باستخدام اسم مستخدم وكلمة مرور بدلا من ذلك، تخطي هذا القسم.
- قم بتسجيل الدخول إلى بوابة Azure.
- في جزء التنقل الأيمن، انقر فوق معرف Microsoft Entra.
- انقر فوق تسجيلات التطبيقات.
- انقر فوق New Registration. أدخل اسما للتطبيق الجديد وقم بتعيين عنوان URI لإعادة التوجيه إلى
https://<workspace-url>/login/oauth/azure.html
. - انقر فوق تسجيل.
- في مربع Essentials، انسخ معرف التطبيق (العميل) واخزنه. ستستخدم هذه القيمة لتكوين التطبيق.
- انقر فوق الشهادات والأسرار.
- في علامة التبويب Client secrets ، انقر فوق New client secret.
- أدخل وصفا للسر وانتهاء الصلاحية (الإعداد الافتراضي هو 180 يوما).
- انقر فوق إضافة.
- انسخ القيمة التي تم إنشاؤها لسر العميل.
- انقر فوق أذونات واجهة برمجة التطبيقات.
- انقر فوق إضافة إذن.
- حدد قاعدة بيانات Azure SQL وانقر فوق user_impersonation ضمن الأذونات المفوضة.
- انقر فوق Add a permission.
إنشاء اتصال
يحدد الاتصال مسارا وبيانات اعتماد للوصول إلى نظام قاعدة بيانات خارجي. لإنشاء اتصال، يمكنك استخدام مستكشف الكتالوج 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، انقر فوق كتالوج.
في أعلى جزء الكتالوج، انقر فوق الأيقونة إضافة وحدد إضافة اتصال من القائمة.
بدلا من ذلك، من صفحة الوصول السريع، انقر فوق الزر بيانات خارجية، وانتقل إلى علامة التبويب اتصالات ، وانقر فوق إنشاء اتصال.
أدخل اسم اتصال سهل الاستخدام.
حدد نوع اتصال SQL Server.
حدد نوع المصادقة من OAuth أو اسم المستخدم وكلمة المرور.
أدخل خصائص الاتصال التالية لمثيل SQL Server الخاص بك، اعتمادا على أسلوب المصادقة الخاص بك:
- المضيف: خادم SQL الخاص بك.
- (المصادقة الأساسية) ميناء
- (المصادقة الأساسية) trustServerCertificate: الافتراضيات إلى
false
. عند التعيين إلىtrue
، تستخدم طبقة النقل SSL لتشفير القناة وتجاوز سلسلة الشهادات للتحقق من صحة الثقة. اترك هذه المجموعة إلى الإعداد الافتراضي ما لم تكن لديك حاجة محددة لتجاوز التحقق من صحة الثقة. - (المصادقة الأساسية) مستخدم
- (المصادقة الأساسية) شعار
- (OAuth) نقطة نهاية التخويل: نقطة نهاية تخويل Azure Entra بالتنسيق
https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/authorize
. - (OAuth) معرف العميل من التطبيق الذي أنشأته.
- (OAuth) سر العميل من سر العميل الذي أنشأته.
- (OAuth) نطاق العميل: أدخل القيمة التالية بدون تعديلات:
https://database.windows.net/.default offline_access
. - (OAuth) تتم مطالبتك بتسجيل الدخول إلى تسجيل الدخول باستخدام معرف Azure Entra. أدخل اسم مستخدم وكلمة مرور Azure. بعد إعادة توجيهك إلى صفحة إنشاء الاتصال، يتم ملء رمز التخويل في واجهة المستخدم.
(اختياري) انقر فوق اختبار الاتصال للتأكد من أنه يعمل.
(اختياري) إضافة تعليق.
انقر فوق Create.
إشعار
(OAuth) يجب أن تكون نقطة نهاية Azure Entra ID OAuth قابلة للوصول من عناوين IP لمستوى التحكم Azure Databricks. راجع مناطق Azure Databricks.
SQL
قم بتشغيل الأمر التالي في دفتر ملاحظات أو محرر استعلام Databricks SQL.
CREATE CONNECTION <connection-name> TYPE sqlserver
OPTIONS (
host '<hostname>',
port '<port>',
user '<user>',
password '<password>'
);
نوصي باستخدام أسرار Azure Databricks بدلا من سلاسل النص العادي للقيم الحساسة مثل بيانات الاعتماد. على سبيل المثال:
CREATE CONNECTION <connection-name> TYPE sqlserver
OPTIONS (
host '<hostname>',
port '<port>',
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>');
عمليات الدفع المدعومة
يتم دعم القوائم المنبثقة التالية على جميع الحوسبة:
- عوامل التصفية
- التوقعات
- الحد
- الدالات: جزئية، فقط لتعبيرات التصفية. (دالات السلسلة، والدالات الرياضية، والبيانات، ودالات الوقت والطوابع الزمنية، والدالات المتنوعة الأخرى، مثل الاسم المستعار، والصب، وSortOrder)
يتم دعم عمليات الدفع التالية على Databricks Runtime 13.3 LTS وما فوق، وعلى حساب مستودع SQL:
- التجميعات
- عوامل التشغيل المنطقية التالية: =, <, <=, >, >=, <=>
- الدالات الرياضية التالية (غير معتمدة إذا تم تعطيل ANSI): +, -, *, ٪, /
- عوامل التشغيل المتنوعة التالية: ^, |, ~
- الفرز، عند استخدامه مع الحد
لا يتم دعم القوائم المنبثقة التالية:
- عمليات الربط
- وظائف Windows
تعيينات نوع البيانات
عند القراءة من SQL Server إلى Spark، يتم تعيين أنواع البيانات كما يلي:
نوع SQL Server | نوع Spark |
---|---|
bigint (غير موقعة)، عشري، مال، رقمي، صغير | نوع عشري |
smallint، tinyint | ShortType |
العدد الصحيح | IntegerType |
bigint (إذا تم توقيعه) | LongType |
real | FloatType |
عائم | DoubleType |
حرف، nchar، معرف فريد | نوع CharType |
nvarchar, varchar | VarcharType |
text, xml | StringType |
ثنائي، جغرافيا، هندسة، صورة، طابع زمني، udt، متغير | نوع ثنائي |
بت | BooleanType |
date | DateType |
datetime, datetime, smalldatetime, time | TimestampType/TimestampNTZType |
*عند القراءة من SQL Server، يتم تعيين SQL Server datetimes
إلى Spark TimestampType
إذا preferTimestampNTZ = false
(افتراضي). يتم تعيين SQL Server datetimes
إلى TimestampNTZType
إذا .preferTimestampNTZ = true