تحميل البيانات باستخدام جداول الدفق في Databricks SQL

توصي Databricks باستخدام جداول الدفق لاستيعاب البيانات باستخدام Databricks SQL. جدول الدفق هو جدول مسجل في كتالوج Unity مع دعم إضافي للتدفق أو معالجة البيانات المتزايدة. يتم إنشاء مسار Delta Live Tables تلقائيا لكل جدول دفق. يمكنك استخدام جداول الدفق لتحميل البيانات المتزايدة من Kafka وتخزين الكائنات السحابية.

توضح هذه المقالة استخدام جداول الدفق لتحميل البيانات من تخزين كائن السحابة الذي تم تكوينه كوحدة تخزين كتالوج Unity (مستحسن) أو موقع خارجي.

إشعار

لمعرفة كيفية استخدام جداول Delta Lake كمصادر تدفق ومتلقين، راجع قراءات وكتابات دفق جدول Delta.

قبل البدء

قبل البدء، يجب أن تفي بالمتطلبات التالية.

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

  • حساب Azure Databricks مع تمكين بلا خادم. لمزيد من المعلومات، راجع تمكين مستودعات SQL بلا خادم.
  • مساحة عمل مع تمكين كتالوج Unity. لمزيد من المعلومات، راجع إعداد كتالوج Unity وإدارته.

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

يجب استخدام أحد الإجراءات التالية:

  • مستودع SQL يستخدم القناة Current .

  • حساب مع وضع الوصول المشترك على Databricks Runtime 13.3 LTS أو أعلى.

  • الحوسبة باستخدام وضع وصول مستخدم واحد على Databricks Runtime 15.4 LTS أو أعلى (معاينة عامة).

    في Databricks Runtime 15.3 والإدناه، لا يمكنك استخدام حساب مستخدم واحد للاستعلام عن جداول الدفق التي يملكها مستخدمون آخرون. يمكنك استخدام حساب مستخدم واحد على Databricks Runtime 15.3 وما دونه فقط إذا كنت تملك جدول الدفق. منشئ الجدول هو المالك.

    يدعم Databricks Runtime 15.4 LTS وما فوق الاستعلامات على جداول Delta Live التي تم إنشاؤها على حساب المستخدم الفردي، بغض النظر عن ملكية الجدول. للاستفادة من تصفية البيانات المتوفرة في Databricks Runtime 15.4 LTS وما فوق، يجب التأكد من تمكين مساحة العمل الخاصة بك للحساب بلا خادم لأن وظيفة تصفية البيانات التي تدعم الجداول التي تم إنشاؤها في Delta Live Tables تعمل على حساب بلا خادم. يمكن تحصيل رسوم منك مقابل موارد الحوسبة بلا خادم عند استخدام حساب مستخدم واحد لتشغيل عمليات تصفية البيانات. راجع التحكم في الوصول الدقيق على حساب المستخدم الفردي.

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

  • الامتياز READ FILES على موقع خارجي كتالوج Unity. للحصول على معلومات، راجع إنشاء موقع خارجي لتوصيل التخزين السحابي ب Azure Databricks.
  • الامتياز USE CATALOG على الكتالوج الذي تقوم فيه بإنشاء جدول الدفق.
  • الامتياز USE SCHEMA على المخطط الذي تقوم فيه بإنشاء جدول الدفق.
  • الامتياز CREATE TABLE على المخطط الذي تقوم فيه بإنشاء جدول الدفق.

المتطلبات الأخرى:

  • المسار إلى بيانات المصدر.

    مثال مسار وحدة التخزين: /Volumes/<catalog>/<schema>/<volume>/<path>/<file-name>

    مثال على مسار الموقع الخارجي: abfss://myContainer@myStorageAccount.dfs.core.windows.net/analysis

    إشعار

    تفترض هذه المقالة أن البيانات التي تريد تحميلها موجودة في موقع تخزين سحابي يتوافق مع وحدة تخزين كتالوج Unity أو موقع خارجي لديك حق الوصول إليه.

اكتشاف البيانات المصدر ومعاينةها

  1. في الشريط الجانبي لمساحة العمل، انقر فوق استعلامات، ثم انقر فوق إنشاء استعلام.

  2. في محرر الاستعلام، حدد مستودع SQL الذي يستخدم القناة Current من القائمة المنسدلة.

  3. الصق ما يلي في المحرر، واستبدل القيم في أقواس الزاوية (<>) للحصول على المعلومات التي تحدد بيانات المصدر، ثم انقر فوق تشغيل.

    إشعار

    قد تواجه أخطاء في استنتاج المخطط عند تشغيل دالة read_files قيم الجدول إذا لم تتمكن الإعدادات الافتراضية للدالة من تحليل بياناتك. على سبيل المثال، قد تحتاج إلى تكوين وضع متعدد الأسطر لملفات CSV أو JSON متعددة الأسطر. للحصول على قائمة بخيارات المحلل، راجع read_files دالة ذات قيمة جدول.

    /* Discover your data in a volume */
    LIST "/Volumes/<catalog>/<schema>/<volume>/<path>/<folder>"
    
    /* Preview your data in a volume */
    SELECT * FROM read_files("/Volumes/<catalog>/<schema>/<volume>/<path>/<folder>") LIMIT 10
    
    /* Discover your data in an external location */
    LIST "abfss://<container>@<storage-account>.dfs.core.windows.net/<path>/<folder>"
    
    /* Preview your data */
    SELECT * FROM read_files("abfss://<container>@<storage-account>.dfs.core.windows.net/<path>/<folder>") LIMIT 10
    

تحميل البيانات في جدول دفق

لإنشاء جدول دفق من البيانات في تخزين كائن السحابة، الصق ما يلي في محرر الاستعلام، ثم انقر فوق تشغيل:

/* Load data from a volume */
CREATE OR REFRESH STREAMING TABLE <table-name> AS
SELECT * FROM STREAM read_files('/Volumes/<catalog>/<schema>/<volume>/<path>/<folder>')

/* Load data from an external location */
CREATE OR REFRESH STREAMING TABLE <table-name> AS
SELECT * FROM STREAM read_files('abfss://<container>@<storage-account>.dfs.core.windows.net/<path>/<folder>')

تحديث جدول دفق باستخدام مسار DLT

يصف هذا القسم أنماط تحديث جدول دفق مع أحدث البيانات المتوفرة من المصادر المحددة في الاستعلام.

CREATE تستخدم عمليات تدفق الجداول مستودع Databricks SQL لإنشاء البيانات وتحميلها الأولي في جدول الدفق. REFRESH تستخدم عمليات تدفق الجداول جداول Delta Live (DLT). يتم إنشاء مسار DLT تلقائيا لكل جدول دفق. عند تحديث جدول تدفق، يتم بدء تحديث البنية الأساسية لبرنامج ربط العمليات التجارية DLT لمعالجة التحديث.

بعد تشغيل REFRESH الأمر، يتم إرجاع ارتباط مسار DLT. يمكنك استخدام ارتباط مسار DLT للتحقق من حالة التحديث.

إشعار

يمكن لمالك الجدول فقط تحديث جدول تدفق للحصول على أحدث البيانات. المستخدم الذي يقوم بإنشاء الجدول هو المالك، ولا يمكن تغيير المالك.

راجع ما هي جداول Delta Live؟.

استيعاب البيانات الجديدة فقط

بشكل افتراضي، تقرأ الدالة read_files كافة البيانات الموجودة في الدليل المصدر أثناء إنشاء الجدول، ثم تعالج السجلات التي تصل حديثا مع كل تحديث.

لتجنب استيعاب البيانات الموجودة بالفعل في الدليل المصدر في وقت إنشاء الجدول، قم بتعيين includeExistingFiles الخيار إلى false. وهذا يعني أنه تتم معالجة البيانات التي تصل إلى الدليل فقط بعد إنشاء الجدول. على سبيل المثال:

CREATE OR REFRESH STREAMING TABLE my_bronze_table
AS SELECT *
FROM STREAM read_files(
  'abfss://myContainer@myStorageAccount.dfs.core.windows.net/analysis/*/*/*.json',
  includeExistingFiles => false)

تحديث جدول دفق بشكل كامل

يقوم التحديث الكامل بإعادة معالجة جميع البيانات المتوفرة في المصدر بأحدث تعريف. لا يوصى باستدعاء التحديثات الكاملة على المصادر التي لا تحتفظ بمحفوظات البيانات بأكملها أو لديها فترات استبقاء قصيرة، مثل Kafka، لأن التحديث الكامل يقتطع البيانات الموجودة. قد لا تتمكن من استرداد البيانات القديمة إذا لم تعد البيانات متوفرة في المصدر.

على سبيل المثال:

REFRESH STREAMING TABLE my_bronze_table FULL

جدولة جدول تدفق للتحديث التلقائي

لتكوين جدول دفق للتحديث تلقائيا استنادا إلى جدول محدد، الصق ما يلي في محرر الاستعلام، ثم انقر فوق تشغيل:

ALTER STREAMING TABLE
[[<catalog>.]<database>.]<name>
ADD [SCHEDULE [REFRESH]
        CRON '<cron-string>'
                [ AT TIME ZONE '<timezone-id>' ]];

على سبيل المثال، تحديث استعلامات الجدول، راجع ALTER STREAMING TABLE.

تعقب حالة التحديث

يمكنك عرض حالة تحديث جدول الدفق عن طريق عرض المسار الذي يدير جدول الدفق في واجهة مستخدم Delta Live Tables أو عن طريق عرض معلومات التحديث التي تم إرجاعها بواسطة DESCRIBE EXTENDED الأمر لجدول الدفق.

DESCRIBE EXTENDED <table-name>

استيعاب البث من Kafka

للحصول على مثال على استيعاب البث من Kafka، راجع read_kafka.

منح المستخدمين حق الوصول إلى جدول دفق

لمنح المستخدمين الامتياز SELECT على جدول الدفق حتى يتمكنوا من الاستعلام عنه، الصق ما يلي في محرر الاستعلام، ثم انقر فوق تشغيل:

GRANT SELECT ON TABLE <catalog>.<schema>.<table> TO <user-or-group>

لمزيد من المعلومات حول منح الامتيازات على الكائنات القابلة للتأمين لكتالوج Unity، راجع امتيازات كتالوج Unity والكائنات القابلة للتأمين.

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