تحويل إلى دلتا

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

تحويل جدول Parquet موجود إلى جدول Delta في مكانه. يسرد هذا الأمر جميع الملفات في الدليل، وينشئ سجل معاملات Delta Lake الذي يتعقب هذه الملفات، ويستنتج تلقائيا مخطط البيانات عن طريق قراءة تذييلات جميع ملفات Parquet. تجمع عملية التحويل الإحصائيات لتحسين أداء الاستعلام على جدول Delta المحول. إذا قمت بتوفير اسم جدول، يتم تحديث metastore أيضا ليعكس أن الجدول أصبح الآن جدول Delta.

يدعم هذا الأمر تحويل جداول Iceberg التي يكون تنسيق ملفها الأساسي هو Parquet. في هذه الحالة، ينشئ المحول سجل معاملات Delta Lake استنادا إلى بيان الملف الأصلي لجدول Iceberg والمخطط ومعلومات التقسيم.

بناء الجملة

CONVERT TO DELTA table_name [ NO STATISTICS ] [ PARTITIONED BY clause ]

المعلمات

  • table_name

    إما معرف جدول مؤهل اختياريا أو مسار إلى parquet دليل أو iceberg ملف. يجب ألا يتضمن الاسم مواصفات زمنية. بالنسبة لجداول جبل الجليد، يمكنك استخدام المسارات فقط، حيث إن تحويل جداول جبل الجليد المدارة غير مدعوم.

  • لا توجد إحصائيات

    تجاوز جمع الإحصائيات أثناء عملية التحويل وإنهاء التحويل بشكل أسرع. بعد تحويل الجدول إلى Delta Lake، يمكنك استخدام OPTIMIZE ZORDER BY لإعادة تنظيم تخطيط البيانات وإنشاء إحصائيات.

  • مقسمة حسب

    تقسيم الجدول الذي تم إنشاؤه حسب الأعمدة المحددة. عندما table_name يكون مسارا، PARTITIONED BY يكون مطلوبا للبيانات المقسمة. table_name عندما يكون معرف جدول مؤهلا، PARTITIONED BY تكون العبارة اختيارية ويتم تحميل مواصفات القسم من metastore. في أي من الأسلوبين، يتم إحباط عملية التحويل وطرح استثناء إذا كانت بنية الدليل لا تتوافق مع المواصفات المتوفرة أو المحملة PARTITIONED BY .

    إشعار

    في Databricks Runtime 11.1 والإصدارات أدناه، PARTITIONED BY هي وسيطة مطلوبة لجميع البيانات المقسمة.

الأمثلة

إشعار

لا تحتاج إلى توفير معلومات التقسيم لجداول أو جداول Iceberg المسجلة في metastore.

CONVERT TO DELTA database_name.table_name; -- only for Parquet tables

CONVERT TO DELTA parquet.`abfss://container-name@storage-account-name.dfs.core.windows.net/path/to/table`
  PARTITIONED BY (date DATE); -- if the table is partitioned

CONVERT TO DELTA iceberg.`abfss://container-name@storage-account-name.dfs.core.windows.net/path/to/table`; -- uses Iceberg manifest for metadata

تحذيرات

أي ملف لم يتم تعقبه بواسطة Delta Lake غير مرئي ويمكن حذفه عند تشغيل VACUUM. يجب تجنب تحديث ملفات البيانات أو إلحاقها أثناء عملية التحويل. بعد تحويل الجدول، تأكد من أن جميع عمليات الكتابة تمر عبر Delta Lake.

من الممكن أن تشترك جداول خارجية متعددة في نفس دليل Parquet الأساسي. في هذه الحالة، إذا قمت بتشغيل CONVERT على أحد الجداول الخارجية، فلن تتمكن من الوصول إلى الجداول الخارجية الأخرى لأنه تم تحويل دليلها الأساسي من Parquet إلى Delta Lake. للاستعلام عن هذه الجداول الخارجية أو الكتابة إليها مرة أخرى، يجب تشغيل CONVERT عليها أيضا.

CONVERT يملأ معلومات الكتالوج، مثل خصائص المخطط والجدول، في سجل معاملات Delta Lake. إذا تم تحويل الدليل الأساسي بالفعل إلى Delta Lake وكانت بيانات التعريف الخاصة به مختلفة عن بيانات تعريف الكتالوج convertMetastoreMetadataMismatchException ، يتم طرح.

أثناء استخدام Databricks Runtime، إذا كنت تريد CONVERT الكتابة فوق بيانات التعريف الموجودة في سجل معاملات Delta Lake، فقم بتعيين تكوين spark.databricks.delta.convert.metadataCheck.enabled SQL إلى false.