تشغيل الاستعلامات الموحدة على Google BigQuery

هام

هذه الميزة في المعاينة العامة.

توضح هذه المقالة كيفية إعداد Lakehouse Federation لتشغيل الاستعلامات الموحدة على بيانات BigQuery التي لا تتم إدارتها بواسطة Azure Databricks. لمعرفة المزيد حول Lakehouse Federation، راجع ما هو Lakehouse Federation.

للاتصال بقاعدة بيانات BigQuery باستخدام Lakehouse Federation، يجب عليك إنشاء ما يلي في مخزن metastore لكتالوج Azure Databricks Unity:

  • اتصال بقاعدة بيانات BigQuery.
  • كتالوج خارجي يعكس قاعدة بيانات BigQuery في كتالوج Unity بحيث يمكنك استخدام بناء جملة استعلام كتالوج Unity وأدوات إدارة البيانات لإدارة وصول مستخدم Azure Databricks إلى قاعدة البيانات.

قبل البدء

متطلبات مساحة العمل:

  • مساحة العمل ممكنة ل Unity Catalog.

متطلبات الحساب:

  • اتصال الشبكة من نظام مجموعة Databricks Runtime أو مستودع SQL إلى أنظمة قاعدة البيانات الهدف. راجع توصيات الشبكات ل Lakehouse Federation.
  • يجب أن تستخدم مجموعات Azure Databricks Databricks وقت تشغيل Databricks 13.3 LTS أو أعلى ووضع الوصول المشترك أو أحادي المستخدم.
  • يجب أن تكون مستودعات SQL Pro أو بلا خادم.

الأذونات المطلوبة:

  • لإنشاء اتصال، يجب أن تكون مسؤول metastore أو مستخدما لديه CREATE CONNECTION الامتياز على مخزن بيانات تعريف كتالوج Unity المرفق بمساحة العمل.
  • لإنشاء كتالوج خارجي، يجب أن يكون لديك CREATE CATALOG الإذن على metastore وأن تكون إما مالك الاتصال أو أن يكون لديك CREATE FOREIGN CATALOG امتياز على الاتصال.

يتم تحديد متطلبات إذن إضافية في كل مقطع يستند إلى المهام التالية.

إنشاء اتصال

يحدد الاتصال مسارا وبيانات اعتماد للوصول إلى نظام قاعدة بيانات خارجي. لإنشاء اتصال، يمكنك استخدام مستكشف الكتالوج CREATE CONNECTION أو الأمر SQL في دفتر ملاحظات Azure Databricks أو محرر استعلام Databricks SQL.

الأذونات المطلوبة: مسؤول Metastore أو المستخدم الذي يتمتع بالامتياز CREATE CONNECTION .

مستكشف الكتالوج

  1. في مساحة عمل Azure Databricks، انقر فوق أيقونة الكتالوجكتالوج.

  2. في الجزء الأيمن، قم بتوسيع قائمة البيانات الخارجية وحدد الاتصال ions.

  3. انقر فوق إنشاء اتصال.

  4. أدخل اسم الاتصال سهل الاستخدام.

  5. حدد نوع الاتصال من BigQuery.

  6. أدخل خاصية الاتصال التالية لمثيل BigQuery.

    GoogleServiceAccountKeyJson: كائن JSON أولي يستخدم لتحديد مشروع BigQuery وتوفير المصادقة. يمكنك إنشاء كائن JSON هذا وتنزيله من صفحة تفاصيل حساب الخدمة في Google Cloud ضمن "KEYS". يجب أن يكون لحساب الخدمة الأذونات المناسبة الممنوحة في BigQuery، بما في ذلك BigQuery User وBigQuery Data Viewer. وفيما يلي مثال على ذلك.

    {
      "type": "service_account",
      "project_id": "PROJECT_ID",
      "private_key_id": "KEY_ID",
      "private_key": "-----BEGIN PRIVATE KEY-----\nPRIVATE_KEY\n-----END PRIVATE KEY-----\n",
      "client_email": "SERVICE_ACCOUNT_EMAIL",
      "client_id": "CLIENT_ID",
      "auth_uri": "https://accounts.google.com/o/oauth2/auth",
      "token_uri": "https://accounts.google.com/o/oauth2/token",
      "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
      "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/SERVICE_ACCOUNT_EMAIL",
      "universe_domain": "googleapis.com"
    }
    
  7. (اختياري) انقر فوق اختبار الاتصال لتأكيد اتصال الشبكة. لا يختبر هذا الإجراء المصادقة.

  8. (اختياري) إضافة تعليق.

  9. انقر فوق Create.

Sql

قم بتشغيل الأمر التالي في دفتر ملاحظات أو محرر استعلام Databricks SQL. استبدل <GoogleServiceAccountKeyJson> بعنصر JSON الخام الذي يحدد مشروع BigQuery ويوفر المصادقة. يمكنك إنشاء كائن JSON هذا وتنزيله من صفحة تفاصيل حساب الخدمة في Google Cloud ضمن "KEYS". يحتاج حساب الخدمة إلى منح الأذونات المناسبة في BigQuery، بما في ذلك BigQuery User وBigQuery Data Viewer. للحصول على مثال لكائن JSON، اعرض علامة التبويب مستكشف الكتالوج في هذه الصفحة.

CREATE CONNECTION <connection-name> TYPE bigquery
OPTIONS (
  GoogleServiceAccountKeyJson '<GoogleServiceAccountKeyJson>'
);

نوصي باستخدام أسرار Azure Databricks بدلا من سلاسل النص العادي للقيم الحساسة مثل بيانات الاعتماد. على سبيل المثال:

CREATE CONNECTION <connection-name> TYPE bigquery
OPTIONS (
  GoogleServiceAccountKeyJson secret ('<secret-scope>','<secret-key-user>')
)

للحصول على معلومات حول إعداد البيانات السرية، راجع إدارة البيانات السرية.

إنشاء كتالوج خارجي

يعكس الكتالوج الخارجي قاعدة بيانات في نظام بيانات خارجي بحيث يمكنك الاستعلام عن الوصول إلى البيانات وإدارتها في قاعدة البيانات هذه باستخدام Azure Databricks وUnity Catalog. لإنشاء كتالوج خارجي، استخدم اتصالا بمصدر البيانات الذي تم تعريفه بالفعل.

لإنشاء كتالوج خارجي، يمكنك استخدام مستكشف الكتالوج أو CREATE FOREIGN CATALOG في دفتر ملاحظات Azure Databricks أو محرر استعلام Databricks SQL.

الأذونات المطلوبة:CREATE CATALOG إذن على metastore وإما ملكية الاتصال أو الامتياز CREATE FOREIGN CATALOG على الاتصال.

مستكشف الكتالوج

  1. في مساحة عمل Azure Databricks، انقر فوق أيقونة الكتالوجكتالوج.
  2. انقر فوق الزر إنشاء كتالوج.
  3. في مربع الحوار إنشاء كتالوج جديد، أدخل اسما للكتالوج وحدد نوعخارجي.
  4. حدد الاتصال الذي يوفر الوصول إلى قاعدة البيانات التي تريد عكسها ككتالوج Unity.
  5. انقر فوق Create.

Sql

قم بتشغيل أمر SQL التالي في دفتر ملاحظات أو محرر Databricks SQL. العناصر الموجودة بين قوسين اختيارية. استبدل قيم العنصر النائب.

  • <catalog-name>: اسم الكتالوج في Azure Databricks.
  • <connection-name>: كائن الاتصال الذي يحدد مصدر البيانات والمسار وبيانات اعتماد الوصول.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>;

عمليات الدفع المدعومة

يتم دعم القوائم المنبثقة التالية:

  • عوامل التصفية
  • التوقعات
  • الحد
  • الدالات: جزئية، فقط لتعبيرات التصفية. (دالات السلسلة، والدالات الرياضية، والبيانات، ودالات الوقت والطوابع الزمنية، والدالات المتنوعة الأخرى، مثل الاسم المستعار، والصب، وSortOrder)
  • التجميعات
  • الفرز، عند استخدامه مع الحد

لا يتم دعم القوائم المنبثقة التالية:

  • عمليات الربط
  • وظائف Windows

تعيينات نوع البيانات

يعرض الجدول التالي تعيين نوع بيانات BigQuery إلى Spark.

نوع BigQuery نوع Spark
bignumeric, numeric نوع عشري
int64 LongType
float64 DoubleType
صفيف، جغرافيا، فاصل زمني، json، سلسلة، بنية VarcharType
وحدات البايت نوع ثنائي
منطقي BooleanType
date DateType
التاريخ والوقت والطوابع الزمنية TimestampType/TimestampNTZType

عند القراءة من BigQuery، يتم تعيين BigQuery Timestamp إلى Spark TimestampType إذا preferTimestampNTZ = false (افتراضي). يتم تعيين BigQuery Timestamp إلى TimestampNTZType إذا .preferTimestampNTZ = true