مشاركة عبر


برنامج تشغيل 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/cliserviceHTTP ، يمكنك استخدام عنوان URL للاتصال التالي: jdbc:databricks://localhost:10002;httpPath=cliservice

للحصول على عنوان URL لاتصال JDBC لنظام مجموعة Azure Databricks:

  1. سجل الدخول إلى مساحة عمل Azure Databricks.
  2. في الشريط الجانبي، انقر فوق حساب، ثم انقر فوق اسم نظام المجموعة الهدف.
  3. في علامة التبويب Configuration ، قم بتوسيع Advanced options.
  4. انقر فوق علامة التبويب JDBC/ODBC.
  5. انسخ عنوان URL ل JDBC لاستخدامه كعنول URL لاتصال JDBC، أو أنشئ عنوان URL من القيم الموجودة في حقول اسم مضيف الخادم والمنفذ ومسار HTTP.

للحصول على عنوان URL لاتصال JDBC لمستودع Databricks SQL:

  1. سجل الدخول إلى مساحة عمل Azure Databricks.
  2. في الشريط الجانبي، انقر فوق SQL Warehouses، ثم انقر فوق اسم المستودع الهدف.
  3. انقر فوق علامة التبويب تفاصيل الاتصال.
  4. انسخ عنوان URL ل JDBC لاستخدامه كعنول URL لاتصال JDBC، أو أنشئ عنوان URL من القيم الموجودة في حقول اسم مضيف الخادم والمنفذ ومسار HTTP.

مصادقة برنامج التشغيل

يمكنك مصادقة اتصال برنامج تشغيل JDBC باستخدام إحدى آليات المصادقة التالية:

مصادقة 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:

  1. إنشاء كيان خدمة مدار من Microsoft Entra ID ثم تعيينه إلى حسابات Azure Databricks ومساحات العمل. للحصول على التفاصيل، راجع إدارة كيانات الخدمة.

    هام

    يدعم برنامج تشغيل Databricks JDBC (OSS) أسرار Azure Databricks OAuth لمصادقة بيانات اعتماد عميل OAuth M2M أو OAuth 2.0. أسرار معرف Microsoft Entra غير مدعومة.

  2. إنشاء سر Azure Databricks OAuth لمدير الخدمة. للقيام بذلك، راجع إنشاء رموز الوصول المميزة واستخدامها يدويا لمصادقة OAuth M2M.

  3. امنح كيان الخدمة حق الوصول إلى نظام المجموعة أو المستودع. راجع حساب الأذونات أو إدارة مستودع 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وProxyPwdProxyHostProxyPortProxyUID).
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:

  1. تمكين إطار عمل التسجيل الذي تريد استخدامه:

    • لتسجيل SLF4J، قم بتعيين خاصية -Dcom.databricks.jdbc.loggerImpl=SLF4JLOGGER النظام وتوفير تنفيذ ربط SLF4J (متوافق مع إصدار SLF4J 2.0.13 وما فوق) وملف التكوين المقابل في classpath.
    • لتسجيل JUL، قم بتعيين خاصية -Dcom.databricks.jdbc.loggerImpl=JDKLOGGERالنظام . هذا هو الوضع الافتراضي.
  2. قم بتعيين الخاصية LogLevel على سلسلة الاتصال إلى المستوى المطلوب من المعلومات لتضمينها في ملفات السجل.

  3. قم بتعيين الخاصية LogPath على سلسلة الاتصال إلى المسار الكامل إلى المجلد حيث تريد حفظ ملفات السجل.

    على سبيل المثال، يتيح عنوان URL للاتصال التالي مستوى التسجيل 6 ويحفظ ملفات السجل في المجلد C:temp:

    jdbc: databricks://localhost:11000;LogLevel=6;LogPath=C:\\temp
    
  4. أعد تشغيل تطبيق 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();
        }
    }
}

الموارد الإضافية