برنامج تشغيل Databricks JDBC (OSS)
يوفر Databricks برنامج تشغيل JDBC لبرنامج مصدر مفتوح (OSS) يمكنك من توصيل أدوات مثل DataGrip وDBeaver وSQL Workbench/J ب Azure Databricks من خلال اتصال قاعدة بيانات Java (JDBC)، وهي مواصفات قياسية في الصناعة للوصول إلى أنظمة إدارة قواعد البيانات.
قام برنامج التشغيل هذا بتنفيذ واجهات برمجة تطبيقات JDBC ويوفر وظائف أساسية بما في ذلك OAuth وجلب السحابة وميزات مثل استيعاب وحدة تخزين كتالوج Unity. يقوم بتشغيل وضع الاستعلام الأصلي ويدعم الاستعلام الأصلي ذات المعلمات، ويمكن تشغيله باستخدام واجهات برمجة تطبيقات تنفيذ العبارة، والتي توفر ميزة استبقاء نتائج الاستعلام المفيدة، أو Thrift.
توفر هذه المقالة معلومات حول تثبيت Databricks JDBC Driver (OSS) واستخدامه. للحصول على معلومات حول برنامج تشغيل Databricks JDBC غير OSS، راجع Databricks JDBC Driver.
المتطلبات
لاستخدام برنامج تشغيل Databricks JDBC (OSS)، يجب استيفاء المتطلبات التالية:
- Java Runtime Environment (JRE) 11.0 أو أعلى. يتم دعم اختبار CI على JRE 11 و17 و21.
إشعار
نتيجة للتغيير في JDK 16 الذي تسبب في مشكلة توافق مع مكتبة سهم Apache المستخدمة من قبل برنامج تشغيل JDBC، قد تحدث أخطاء وقت التشغيل عند استخدام برنامج تشغيل JDBC مع JDK 16 أو أعلى. لمنع هذه الأخطاء، أعد تشغيل التطبيق أو برنامج التشغيل باستخدام خيار أمر JVM التالي:
--add-opens=java.base/java.nio=org.apache.arrow.memory.core ALL-UNNAMED
تثبيت برنامج التشغيل
يتم نشر برنامج تشغيل Databricks JDBC (OSS) في مستودع Maven. أحدث إصدار هو 0.9.6-oss.
لتثبيت برنامج التشغيل، يمكنك القيام بأي مما يلي:
بالنسبة لمشاريع Maven، أضف التبعية التالية إلى ملف المشروع
pom.xml
لإرشاد Maven لتنزيل برنامج تشغيل JDBC تلقائيا باستخدام الإصدار المحدد:<dependency> <groupId>com.databricks</groupId> <artifactId>databricks-jdbc</artifactId> <version>0.9.6-oss</version> <scope>runtime</scope> </dependency>
بالنسبة لمشاريع Gradle، أضف التبعية التالية إلى ملف إنشاء المشروع لإرشاد Gradle لتنزيل برنامج تشغيل JDBC تلقائيا باستخدام الإصدار المحدد:
implementation 'com.databricks:databricks-jdbc:0.9.6-oss'
لعرض بناء جملة التبعية وأنواع المشاريع الأخرى، والحصول على أحدث رقم إصدار لبرنامج تشغيل Databricks JDBC (OSS)، راجع مستودع Maven.
تكوين عنوان URL للاتصال
للاتصال بمساحة عمل Azure Databricks باستخدام برنامج تشغيل JDBC، تحتاج إلى تحديد عنوان URL لاتصال JDBC يتضمن إعدادات اتصال مختلفة مثل اسم مضيف خادم مساحة عمل Azure Databricks وإعدادات مورد الحساب وبيانات اعتماد المصادقة للاتصال بمساحة العمل.
يمكنك تعيين قيمة هذه الخصائص على عنوان URL لاتصال JDBC، وتعيينها وتمريرها إلى أسلوب DriverManager.getConnection، أو مزيج من كليهما. راجع وثائق الموفر للحصول على أفضل طريقة للاتصال باستخدام تطبيق أو عميل أو SDK أو API أو أداة SQL معينة.
يجب أن يكون عنوان URL لاتصال JDBC بالتنسيق التالي. الخصائص غير حساسة لحالة الأحرف.
jdbc:databricks://<server-hostname>:<port>/<schema>;[property1]=[value];[property2]=[value];...
بدلا من ذلك، حدد الإعدادات باستخدام java.util.Properties
الفئة أو مجموعة:
String url = "jdbc:databricks://<server-hostname>:<port>/<schema>";
Properties properties = new java.util.Properties();
properties.put("<property1>", "<value1");
properties.put("<property2>", "<value2");
// ...
Connection conn = DriverManager.getConnection(url, properties);
String url = "jdbc:databricks://<server-hostname>:<port>/<schema>;[property1]=[value];[property2]=[value];";
Connection conn = DriverManager.getConnection(url, "token", "12345678901234667890abcdabcd");
يتم وصف عناصر عنوان URL للاتصال في الجدول التالي. للحصول على معلومات حول خصائص إضافية، بما في ذلك خصائص المصادقة، راجع الأقسام أدناه. عناصر URL وخصائصه غير حساسة لحالة الأحرف.
عنصر URL أو الخاصية | الوصف |
---|---|
<server-hostname> |
قيمة اسم مضيف خادم مورد حساب Azure Databricks. |
<port> |
قيمة منفذ مورد حساب Azure Databricks. القيمة الافتراضية هي 443 . |
<schema> |
اسم المخطط. بدلا من ذلك يمكنك تعيين الخاصية ConnSchema . راجع خصائص الاتصال. |
httpPath |
قيمة مسار HTTP لمورد حساب Azure Databricks. يشكل الموصل عنوان HTTP للاتصال به عن طريق إلحاق httpPath القيمة بالمضيف والمنفذ المحددين في عنوان URL للاتصال. على سبيل المثال، للاتصال بعنوان http://localhost:10002/cliservice HTTP ، يمكنك استخدام عنوان URL للاتصال التالي: jdbc:databricks://localhost:10002;httpPath=cliservice |
للحصول على عنوان URL لاتصال JDBC لنظام مجموعة Azure Databricks:
- سجل الدخول إلى مساحة عمل Azure Databricks.
- في الشريط الجانبي، انقر فوق حساب، ثم انقر فوق اسم نظام المجموعة الهدف.
- في علامة التبويب Configuration ، قم بتوسيع Advanced options.
- انقر فوق علامة التبويب JDBC/ODBC.
- انسخ عنوان URL ل JDBC لاستخدامه كعنول URL لاتصال JDBC، أو أنشئ عنوان URL من القيم الموجودة في حقول اسم مضيف الخادم والمنفذ ومسار HTTP.
للحصول على عنوان URL لاتصال JDBC لمستودع Databricks SQL:
- سجل الدخول إلى مساحة عمل Azure Databricks.
- في الشريط الجانبي، انقر فوق SQL Warehouses، ثم انقر فوق اسم المستودع الهدف.
- انقر فوق علامة التبويب تفاصيل الاتصال.
- انسخ عنوان URL ل JDBC لاستخدامه كعنول URL لاتصال JDBC، أو أنشئ عنوان URL من القيم الموجودة في حقول اسم مضيف الخادم والمنفذ ومسار HTTP.
مصادقة برنامج التشغيل
يمكنك مصادقة اتصال برنامج تشغيل JDBC باستخدام إحدى آليات المصادقة التالية:
- مصادقة OAuth من مستخدم إلى جهاز (U2M) (مستحسن)
- مصادقة OAuth من جهاز إلى جهاز (M2M)
- الرمز المميز للوصول الشخصي ل Azure Databricks
مصادقة OAuth من مستخدم إلى جهاز (U2M)
يدعم برنامج تشغيل JDBC مصادقة OAuth من مستخدم إلى جهاز (U2M) لتسجيل الدخول البشري في الوقت الحقيقي والموافقة على مصادقة حساب مستخدم Databricks الهدف. يعرف هذا أيضا باسم مصادقة OAuth المستندة إلى المستعرض.
أنشأت Azure Databricks معرف databricks-sql-jdbc
عميل OAuth للعملاء. هذا هو أيضا معرف عميل OAuth الافتراضي المستخدم في برنامج تشغيل JDBC. لتكوين مصادقة OAuth U2M، ما عليك سوى إضافة الخصائص التالية إلى عنوان URL أو java.util.Properties
الكائن الحالي لاتصال JDBC:
الخاصية | القيمة |
---|---|
AuthMech |
11 |
Auth_Flow |
2 |
مصادقة OAuth من جهاز إلى جهاز (M2M)
يدعم برنامج تشغيل JDBC مصادقة OAuth من جهاز إلى جهاز (M2M) باستخدام كيان خدمة Azure Databricks. يعرف هذا أيضا باسم مصادقة بيانات اعتماد عميل OAuth 2.0. راجع مصادقة الوصول إلى Azure Databricks باستخدام كيان خدمة باستخدام OAuth (OAuth M2M).
لتكوين مصادقة بيانات اعتماد عميل OAuth M2M أو OAuth 2.0:
إنشاء كيان خدمة مدار من Microsoft Entra ID ثم تعيينه إلى حسابات Azure Databricks ومساحات العمل. للحصول على التفاصيل، راجع إدارة كيانات الخدمة.
هام
يدعم برنامج تشغيل Databricks JDBC (OSS) أسرار Azure Databricks OAuth لمصادقة بيانات اعتماد عميل OAuth M2M أو OAuth 2.0. أسرار معرف Microsoft Entra غير مدعومة.
إنشاء سر Azure Databricks OAuth لمدير الخدمة. للقيام بذلك، راجع إنشاء رموز الوصول المميزة واستخدامها يدويا لمصادقة OAuth M2M.
امنح كيان الخدمة حق الوصول إلى نظام المجموعة أو المستودع. راجع حساب الأذونات أو إدارة مستودع SQL.
أضف الخصائص التالية إلى عنوان URL أو java.util.Properties
كائن اتصال JDBC الموجود لديك:
الخاصية | القيمة |
---|---|
AuthMech |
11 |
Auth_Flow |
1 |
OAuth2ClientID |
قيمة معرف التطبيق (العميل) لمدير الخدمة. |
OAuth2Secret |
سر Azure Databricks OAuth الخاص بكيان الخدمة. (أسرار معرف Microsoft Entra غير مدعومة لمصادقة بيانات اعتماد عميل OAuth M2M أو OAuth 2.0.) |
الرمز المميز للوصول الشخصي ل Azure Databricks
لمصادقة اتصال برنامج تشغيل JDBC باستخدام رمز مميز للوصول الشخصي ل Azure Databricks، أضف الخصائص التالية إلى عنوان URL أو java.util.Properties
كائن اتصال JDBC:
الخاصية | القيمة |
---|---|
AuthMech |
3 |
user |
القيمة token ، كسلسلة. |
PWD أو password |
قيمة الرمز المميز للوصول الشخصي ل Azure Databricks كسلسلة. |
خصائص الاتصال
يتم دعم خصائص الاتصال الإضافية التالية بواسطة برنامج تشغيل JDBC. الخصائص غير حساسة لحالة الأحرف.
الخاصية | القيمة الافتراضية | الوصف |
---|---|---|
AuthMech |
مطلوب | آلية المصادقة، حيث 3 تحدد الآلية هي رمز وصول شخصي Azure Databricks، وتحدد 11 الآلية هي رموز OAuth 2.0 المميزة. الخصائص الإضافية مطلوبة لكل آلية. راجع مصادقة برنامج التشغيل. |
Auth_Flow |
0 |
تدفق مصادقة OAuth2 لاتصال برنامج التشغيل. هذه الخاصية مطلوبة إذا كانت AuthMech 11 . |
SSL |
1 |
ما إذا كان الموصل يتصل بخادم Spark من خلال مأخذ توصيل يدعم SSL. |
ConnCatalog أو catalog |
SPARK |
اسم الكتالوج الافتراضي المراد استخدامه. |
ConnSchema أو schema |
default |
اسم المخطط الافتراضي المراد استخدامه. يمكن تحديد هذا إما عن طريق استبدال <schema> في عنوان URL باسم المخطط المراد استخدامه أو عن طريق تعيين الخاصية ConnSchema إلى اسم المخطط المراد استخدامه. |
ProxyAuth |
0 |
إذا تم تعيينه إلى 1 ، يستخدم برنامج التشغيل مستخدم مصادقة الوكيل وكلمة المرور، ممثلة ب ProxyUID و ProxyPwd . |
ProxyHost |
null |
سلسلة تمثل اسم مضيف الوكيل لاستخدامه عند UseProxy تعيين أيضا إلى 1 . |
ProxyPort |
null |
عدد صحيح يمثل عدد منفذ الوكيل الذي يجب استخدامه عند UseProxy تعيينه أيضا إلى 1 . |
ProxyUID |
null |
سلسلة تمثل اسم المستخدم لاستخدامه لمصادقة الوكيل عندما ProxyAuth يتم تعيين و UseProxy أيضا إلى 1 . |
ProxyPwd |
null |
سلسلة تمثل كلمة المرور لاستخدامها لمصادقة الوكيل عندما ProxyAuth يتم تعيين و UseProxy أيضا إلى 1 . |
UseProxy |
0 |
إذا تم تعيينه إلى 1 ، يستخدم برنامج التشغيل إعدادات الوكيل المتوفرة (على سبيل المثال: ProxyAuth وProxyPwd ProxyHost ProxyPort ProxyUID ). |
UseSystemProxy |
0 |
إذا تم تعيينه إلى 1 ، يستخدم برنامج التشغيل إعدادات الوكيل التي تم تعيينها على مستوى النظام. إذا تم تعيين أي خصائص وكيل إضافية في عنوان URL للاتصال، فإن خصائص الوكيل الإضافية هذه تتجاوز تلك التي تم تعيينها على مستوى النظام. |
UseCFProxy |
0 |
إذا تم تعيينه إلى 1 ، يستخدم برنامج التشغيل إعدادات وكيل إحضار السحابة إذا تم توفيرها، وإلا استخدم الوكيل العادي. |
CFProxyAuth |
0 |
إذا تم تعيينه إلى 1 ، يستخدم برنامج التشغيل مستخدم مصادقة الوكيل وكلمة المرور، ممثلة ب CFProxyUID و CFProxyPwd . |
CFProxyHost |
null |
سلسلة تمثل اسم مضيف الوكيل لاستخدامه عند UseCFProxy تعيين أيضا إلى 1 . |
CFProxyPort |
null |
عدد صحيح يمثل عدد منفذ الوكيل الذي يجب استخدامه عند UseCFProxy تعيينه أيضا إلى 1 . |
CFProxyUID |
null |
سلسلة تمثل اسم المستخدم لاستخدامه لمصادقة الوكيل عندما CFProxyAuth يتم تعيين و UseCFProxy أيضا إلى 1 . |
CFProxyPwd |
null |
سلسلة تمثل كلمة المرور لاستخدامها لمصادقة الوكيل عندما CFProxyAuth يتم تعيين و UseCFProxy أيضا إلى 1 . |
AsyncExecPollInterval |
200 |
الوقت بالمللي ثانية بين كل استقصاء لحالة تنفيذ الاستعلام غير المتزامن. يشير غير المتزامن إلى حقيقة أن استدعاء RPC المستخدم لتنفيذ استعلام ضد Spark غير متزامن. هذا لا يعني أن عمليات JDBC غير المتزامنة مدعومة. |
UserAgentEntry |
browser |
إدخال عامل المستخدم المراد تضمينه في طلب HTTP. هذه القيمة بالتنسيق التالي: [ProductName]/[ProductVersion] [Comment] |
UseThriftClient |
0 |
ما إذا كان يجب أن يستخدم برنامج تشغيل JDBC عميل Thrift للاتصال بمجموعة متعددة الأغراض. تعمل القيمة الافتراضية لمستودعات SQL. |
خصائص تكوين SQL
يتم دعم خصائص تكوين SQL التالية بواسطة برنامج تشغيل JDBC. يتم وصفها أيضا في معلمات التكوين. الخصائص غير حساسة لحالة الأحرف.
الخاصية | القيمة الافتراضية | الوصف |
---|---|---|
ansi_mode |
TRUE |
ما إذا كان يجب تمكين سلوك ANSI SQL الصارم لوظائف معينة وقواعد التحويل. |
enable_photo |
TRUE |
ما إذا كنت تريد تمكين محرك الاستعلام المتجه الفوتون. |
legacy_time_parser_policy |
EXCEPTION |
الأساليب المستخدمة لتحليل التواريخ والطوابع الزمنية وتنسيقها. القيم الصالحة هي EXCEPTION و LEGACY و CORRECTED . |
max_file_partition_bytes |
128m |
الحد الأقصى لعدد وحدات البايت التي يجب حزمها في قسم واحد عند القراءة من المصادر المستندة إلى الملف. يمكن أن يكون الإعداد أي عدد صحيح موجب ويتضمن مقياسا اختياريا مثل b (بايت) k أو kb (1024 بايت). |
read_only_external_metastore |
false |
يتحكم في ما إذا كان يتم التعامل مع metastore خارجي على أنه للقراءة فقط. |
statement_timeout |
172800 |
تعيين مهلة جملة SQL بين 0 و172800 ثانية. |
timezone |
UTC |
تعيين المنطقة الزمنية المحلية. معرفات المنطقة في النموذج area/city ، مثل أمريكا/Los_Angeles أو إزاحات المنطقة بالتنسيق (+|-)HH أو (+|-)HH:mm أو (+|-)HH:mm:ss، على سبيل المثال -08 أو +01:00 أو -13:33:33. أيضا، UTC معتمد باسم مستعار ل +00:00 |
use_cached_result |
true |
ما إذا كان Databricks SQL يخزن النتائج مؤقتا ويعيد استخدامها كلما أمكن ذلك. |
تسجيل الخصائص
يتم دعم خصائص التسجيل التالية بواسطة برنامج تشغيل JDBC. الخصائص غير حساسة لحالة الأحرف.
الخاصية | القيمة الافتراضية | الوصف |
---|---|---|
LogLevel |
OFF |
مستوى التسجيل، وهو قيمة من 0 إلى 6: - 0: تعطيل جميع التسجيل. - 1: تمكين التسجيل على مستوى FATAL، الذي يسجل أحداث خطأ شديدة جدا التي ستقود الموصل إلى إجهاض. - 2: تمكين التسجيل على مستوى ERROR، الذي يسجل أحداث الخطأ التي قد لا تزال تسمح للموصل بمتابعة التشغيل. - 3: تمكين التسجيل على مستوى تحذير، الذي يسجل الأحداث التي قد تؤدي إلى خطأ إذا لم يتم اتخاذ إجراء. - 4: تمكين التسجيل على مستوى INFO، الذي يسجل المعلومات العامة التي تصف تقدم الموصل. - 5: تمكين التسجيل على مستوى DEBUG، الذي يسجل معلومات مفصلة مفيدة لتصحيح أخطاء الموصل. - 6: تمكين التسجيل على مستوى TRACE، الذي يسجل جميع نشاط الموصل. استخدم هذه الخاصية لتمكين تسجيل الدخول إلى الموصل أو تعطيله ولتحدين مقدار التفاصيل المضمنة في ملفات السجل. |
LogPath |
لتحديد المسار الافتراضي للسجلات، يستخدم برنامج التشغيل القيمة المعينة لخصائص النظام هذه، بترتيب الأولوية هذا: 1. user.dir 2. java.io.tmpdir 3. الدليل الحالي، وبعبارة أخرى . |
المسار الكامل إلى المجلد حيث يحفظ الموصل ملفات السجل عند تمكين التسجيل، كسلسلة. للتأكد من أن عنوان URL للاتصال متوافق مع جميع تطبيقات JDBC، قم بالهروب من الخطوط المائلة العكسية (\ ) في مسار الملف الخاص بك عن طريق كتابة خط مائل عكسي آخر.LogPath إذا كانت القيمة غير صالحة، يرسل الموصل المعلومات المسجلة إلى دفق الإخراج القياسي (System.out). |
LogFileSize |
لا يوجد حد أقصى | الحد الأقصى المسموح به لحجم ملف السجل، المحدد بالميغابايت |
LogFileCount |
لا يوجد حد أقصى | الحد الأقصى لعدد ملفات السجل المسموح بها |
تمكين التسجيل وتكوينه
يدعم برنامج تشغيل JDBC إطارات عمل Simple Logging Facade ل Java (SLF4J) وjava.util.logging (JUL ). يستخدم برنامج التشغيل إطار عمل تسجيل JUL بشكل افتراضي.
لتمكين التسجيل وتكوينه لبرنامج تشغيل JDBC:
تمكين إطار عمل التسجيل الذي تريد استخدامه:
- لتسجيل SLF4J، قم بتعيين خاصية
-Dcom.databricks.jdbc.loggerImpl=SLF4JLOGGER
النظام وتوفير تنفيذ ربط SLF4J (متوافق مع إصدار SLF4J 2.0.13 وما فوق) وملف التكوين المقابل في classpath. - لتسجيل JUL، قم بتعيين خاصية
-Dcom.databricks.jdbc.loggerImpl=JDKLOGGER
النظام . هذا هو الوضع الافتراضي.
- لتسجيل SLF4J، قم بتعيين خاصية
قم بتعيين الخاصية
LogLevel
على سلسلة الاتصال إلى المستوى المطلوب من المعلومات لتضمينها في ملفات السجل.قم بتعيين الخاصية
LogPath
على سلسلة الاتصال إلى المسار الكامل إلى المجلد حيث تريد حفظ ملفات السجل.على سبيل المثال، يتيح عنوان URL للاتصال التالي مستوى التسجيل 6 ويحفظ ملفات السجل في المجلد C:temp:
jdbc: databricks://localhost:11000;LogLevel=6;LogPath=C:\\temp
أعد تشغيل تطبيق JDBC وأعد الاتصال بالخادم لتطبيق الإعدادات.
مثال: تشغيل استعلام باستخدام برنامج تشغيل JDBC
يوضح المثال التالي كيفية استخدام برنامج تشغيل JDBC لتشغيل استعلام Databricks SQL باستخدام مورد حساب Azure Databricks.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.util.Properties;
public class DatabricksJDBCExample {
public static void main(String[] args) {
Class.forName("com.databricks.client.jdbc.Driver");
// Set JDBC URL properties
String jdbcUrl = "jdbc:databricks://dbc-a1b2345c-d6e7.cloud.databricks.com:443";
Properties connectionProperties = new Properties();
connectionProperties.put("httpPath", "sql/protocolv1/o/123456780012345/0123-123450-z000pi22");
connectionProperties.put("ssl", "1");
// Set authentication properties (personal access token)
connectionProperties.put("AuthMech", "3");
connectionProperties.put("user", "token");
connectionProperties.put("password", "12345678901234667890abcdabcd");
// Set logging properties
connectionProperties.put("logPath", "logs/myapplication.log");
// Establish connection and execute query
try (Connection connection = DriverManager.getConnection(jdbcUrl, connectionProperties);
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery("SELECT * FROM samples.nyctaxi.trips")) {
// Get metadata and column names
ResultSetMetaData metaData = resultSet.getMetaData();
String[] columns = new String[metaData.getColumnCount()];
for (int i = 0; i < columns.length; i++) {
columns[i] = metaData.getColumnName(i + 1);
}
// Process and print the result set
while (resultSet.next()) {
System.out.print("Row " + resultSet.getRow() + "=[");
for (int i = 0; i < columns.length; i++) {
if (i != 0) {
System.out.print(", ");
}
System.out.print(columns[i] + "='" + resultSet.getObject(i + 1) + "'");
}
System.out.println("]");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}