جدول الإصلاح

ينطبق على: وضع علامة Databricks SQL وضع علامة Databricks Runtime

يقوم هذا الأمر بتحديث بيانات تعريف جدول Delta إلى خدمة كتالوج Unity. بالنسبة للجداول غير التابعة ل Delta، فإنه يقوم بإصلاح أقسام الجدول وتحديث Hive metastore.

  • جداول دلتا: عند تنفيذها باستخدام جداول Delta باستخدام الوسيطة SYNC METADATA ، يقرأ هذا الأمر سجل دلتا للجدول الهدف ويحدث معلومات بيانات التعريف إلى خدمة كتالوج Unity.
  • جداول غير دلتا: عند تنفيذها مع جداول غير دلتا، يسترد هذا الأمر جميع الأقسام في دليل جدول غير دلتا ويحدث Hive metastore.

بناء الجملة

[ MSCK ] REPAIR TABLE table_name
{
    [ {ADD | DROP | SYNC} PARTITIONS] | SYNC METADATA
}

بالنسبة إلى وضع علامة Databricks SQL وضع علامة Databricks Runtime 12.2 LTS وما فوق، MSCK هو اختياري.

المعلمات

  • table_name

    اسم الجدول. إذا تعذر العثور على الجدول، فإن Azure Databricks يثير خطأ TABLE_OR_VIEW_NOT_FOUND .

  • ADD أو DROP أو SYNCPARTITIONS

    ينطبق على: وضع علامة Databricks SQL وضع علامة Databricks Runtime 10.4 LTS وما فوق

    عند إنشاء جدول غير Delta باستخدام PARTITIONED BY عبارة ، يتم إنشاء الأقسام وتسجيلها في Hive metastore. ومع ذلك، إذا قمت بإنشاء الجدول المقسم من البيانات الموجودة، فلن يتم تسجيل الأقسام تلقائيا في Hive metastore. قم بتشغيل MSCK REPAIR TABLE لتسجيل الأقسام.

    طريقة أخرى لاسترداد الأقسام هي استخدام ALTER TABLE RECOVER PARTITIONS.

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

    • يضيف الأمر ADD أقساما جديدة إلى كتالوج جلسة العمل لكافة المجلدات الفرعية في مجلد الجدول الأساسي الذي لا ينتمي إلى أي أقسام جدول. ADD هي الوسيطة الافتراضية إذا لم يتم تحديد خيار آخر.
    • يسقط أمر DROP جميع الأقسام من كتالوج جلسة العمل التي تحتوي على مواقع غير موجودة في نظام الملفات.
    • SYNC هو مزيج من DROP وAD.
  • ** SYNC METADATA**

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

    إذا تم تمكين Delta UniForm، SYNC METADATA يقوم بتشغيل التحويل اليدوي لبيانات تعريف Delta الحالية إلى بيانات تعريف Iceberg ومزامنة أحدث إصدار Iceberg لنقطة نهاية Unity Catalog Iceberg. راجع استخدام UniForm لقراءة جداول Delta مع عملاء Iceberg.

أمثلة (جداول غير Delta Lake)

-- create a partitioned table from existing data /tmp/namesAndAges.parquet
> CREATE TABLE t1 (name STRING, age INT) USING parquet PARTITIONED BY (age)
  LOCATION "/tmp/namesAndAges.parquet";

-- SELECT * FROM t1 does not return results
> SELECT * FROM t1;

-- run MSCK REPAIR TABLE to recovers all the partitions
> MSCK REPAIR TABLE t1;

-- SELECT * FROM t1 returns results
> SELECT * FROM t1;
    name age
  ------- ---
  Michael  20
   Justin  19
     Andy  30

مثال (جدول كتالوج Unity)

-- run MSCK REPAIR TABLE t1 SYNC METADATA to update the metadata info to Unity Catalog service
> MSCK REPAIR TABLE t1 SYNC METADATA