تحويل إلى دلتا
ينطبق على: 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 ]
المعلمات
-
إما معرف جدول مؤهل اختياريا أو مسار إلى
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.