توافق التنسيق العالمي (UniForm) ل Iceberg مع جداول Delta
يسمح لك Delta Universal Format (UniForm) بقراءة جداول Delta مع عملاء قارئ Iceberg. تتطلب هذه الميزة Databricks Runtime 14.3 LTS أو أعلى.
هام
للحصول على وثائق لميزة جدول UniForm IcebergCompatV1
القديم، راجع Legacy UniForm IcebergCompatV1.
يستفيد UniForm من حقيقة أن كلا من Delta Lake و Iceberg يتكون من ملفات بيانات Parquet وطبقة بيانات التعريف. يقوم UniForm تلقائيا بإنشاء بيانات تعريف Iceberg بشكل غير متزامن، دون إعادة كتابة البيانات، بحيث يمكن لعملاء Iceberg قراءة جداول Delta كما لو كانت جداول Iceberg. تخدم نسخة واحدة من ملفات البيانات كلا التنسيقين.
يمكنك تكوين اتصال خارجي ليكون كتالوج Unity بمثابة كتالوج Iceberg. راجع القراءة باستخدام نقطة نهاية كتالوج Unity Iceberg.
يستخدم UniForm zstd بدلا من snappy كمبرمج ضغط لملفات بيانات Parquet الأساسية.
إشعار
يتم تشغيل إنشاء بيانات تعريف UniForm بشكل غير متزامن على الحساب المستخدم لكتابة البيانات إلى جداول Delta، مما قد يزيد من استخدام موارد برنامج التشغيل.
المتطلبات
لتمكين UniForm، يجب استيفاء المتطلبات التالية:
- يجب تسجيل جدول Delta في كتالوج Unity. يتم دعم كل من الجداول المدارة والخارجية.
- يجب تمكين تعيين العمود للجدول. راجع إعادة تسمية الأعمدة وإفلاتها باستخدام تعيين عمود Delta Lake.
- يجب أن يحتوي جدول Delta على
minReaderVersion
>= 2 وminWriterVersion
>= 7. راجع كيف تدير Azure Databricks توافق ميزة Delta Lake؟. - يجب أن تستخدم عمليات الكتابة إلى الجدول Databricks Runtime 14.3 LTS أو أعلى.
إشعار
لا يمكنك تمكين متجهات الحذف على جدول مع تمكين UniForm. عند تمكين UniForm على جدول موجود مع تمكين متجهات الحذف، يقوم UniForm بتعطيل ناقلات الحذف ومسحها وإعادة كتابة ملفات البيانات حسب الضرورة.
تمكين Delta UniForm
هام
يؤدي تمكين Delta UniForm إلى تعيين ميزة IcebergCompatV2
جدول Delta ، وهي ميزة بروتوكول الكتابة. يمكن فقط للعملاء الذين يدعمون ميزة الجدول هذه الكتابة إلى الجداول الممكنة بواسطة UniForm. يجب استخدام Databricks Runtime 14.3 LTS أو أعلى للكتابة إلى جداول Delta مع تمكين هذه الميزة.
يمكنك إيقاف تشغيل UniForm عن طريق إلغاء تحديد delta.universalFormat.enabledFormats
خاصية الجدول. لا يمكنك إيقاف تشغيل تعيين العمود بعد تمكينه، ولا يمكن التراجع عن الترقيات إلى إصدارات بروتوكول قارئ Delta Lake والكاتب.
يجب تعيين خصائص الجدول التالية لتمكين دعم UniForm ل Iceberg:
'delta.enableIcebergCompatV2' = 'true'
'delta.universalFormat.enabledFormats' = 'iceberg'
يجب أيضا تمكين تعيين العمود لاستخدام UniForm. يتم تمكين هذا تلقائيا إذا قمت بتمكين UniForm أثناء إنشاء الجدول، كما في المثال التالي:
CREATE TABLE T(c1 INT) TBLPROPERTIES(
'delta.enableIcebergCompatV2' = 'true',
'delta.universalFormat.enabledFormats' = 'iceberg');
يمكنك تمكين UniForm على جدول موجود باستخدام بناء الجملة التالي:
REORG TABLE table_name APPLY (UPGRADE UNIFORM(ICEBERG_COMPAT_VERSION=2));
إشعار
يعمل بناء الجملة هذا أيضا للترقية من إصدار المعاينة العامة من UniForm، الذي استخدم ميزة IcebergCompatV1
الجدول .
يقوم بناء الجملة هذا تلقائيا بتعطيل وإزالة متجهات الحذف من الجدول. تتم إعادة كتابة الملفات الموجودة حسب الضرورة لجعلها متوافقة مع Iceberg.
عند تمكين UniForm لأول مرة، يبدأ إنشاء بيانات التعريف غير المتزامنة. يجب أن تكتمل هذه المهمة قبل أن يتمكن العملاء الخارجيون من الاستعلام عن الجدول باستخدام Iceberg. راجع التحقق من حالة إنشاء بيانات التعريف في Iceberg.
إشعار
إذا كنت تخطط لاستخدام BigQuery كجهاز عميل قارئ Iceberg، فيجب عليك التعيين spark.databricks.delta.write.dataFilesToSubdir
إلى true
على Azure Databricks لاستيعاب متطلبات BigQuery لتخطيط البيانات.
راجع القيود.
متى ينشئ UniForm بيانات تعريف جبل الجليد؟
يقوم Azure Databricks بتشغيل إنشاء بيانات التعريف في Iceberg بشكل غير متزامن بعد اكتمال معاملة كتابة Delta Lake باستخدام نفس الحساب الذي أكمل معاملة Delta. يمكنك أيضا تشغيل إنشاء بيانات تعريف Iceberg يدويا. راجع تشغيل تحويل بيانات تعريف Iceberg يدويا.
لتجنب زمن انتقال الكتابة المرتبط بإنشاء بيانات التعريف في Iceberg، قد تجمع جداول دلتا ذات التثبيتات المتكررة عمليات تثبيت دلتا المتعددة في تثبيت جبل جليدي واحد.
تضمن Delta Lake أن عملية إنشاء بيانات تعريف جبل جليدي واحدة فقط قيد التقدم في أي وقت. ستلتزم عمليات التثبيت التي من شأنها أن تؤدي إلى عملية إنشاء بيانات تعريف Iceberg متزامنة ثانية بنجاح في Delta، ولكنها لن تؤدي إلى إنشاء بيانات تعريف غير متزامنة في Iceberg. يمنع هذا زمن الانتقال المتتالي لإنشاء بيانات التعريف لأحمال العمل ذات التثبيتات المتكررة (من ثوان إلى دقائق بين عمليات التثبيت).
راجع إصدارات جدول Delta و Iceberg.
التحقق من حالة إنشاء بيانات التعريف في Iceberg
يضيف UniForm الحقول التالية إلى كتالوج Unity وبيانات تعريف جدول Iceberg لتتبع حالة إنشاء بيانات التعريف:
حقل بيانات التعريف | الوصف |
---|---|
converted_delta_version |
أحدث إصدار من جدول Delta الذي تم إنشاء بيانات تعريف Iceberg له بنجاح. |
converted_delta_timestamp |
الطابع الزمني لأحدث تثبيت Delta الذي تم إنشاء بيانات تعريف Iceberg له بنجاح. |
في Azure Databricks، يمكنك مراجعة حقول بيانات التعريف هذه عن طريق القيام بأحد الإجراءات التالية:
- مراجعة القسم الذي
Delta Uniform Iceberg
تم إرجاعه بواسطةDESCRIBE EXTENDED table_name
. - مراجعة بيانات تعريف الجدول باستخدام مستكشف الكتالوج.
- استخدام واجهة برمجة تطبيقات REST للحصول على جدول.
راجع وثائق عميل قارئ Iceberg لمعرفة كيفية مراجعة خصائص الجدول خارج Azure Databricks. بالنسبة إلى OSS Apache Spark، يمكنك مشاهدة هذه الخصائص باستخدام بناء الجملة التالي:
SHOW TBLPROPERTIES <table-name>;
تشغيل تحويل بيانات تعريف Iceberg يدويا
يمكنك تشغيل إنشاء بيانات تعريف Iceberg يدويا للحصول على أحدث إصدار من جدول Delta. تعمل هذه العملية بشكل متزامن، ما يعني أنه عند اكتمالها، تعكس محتويات الجدول المتوفرة في Iceberg أحدث إصدار من جدول Delta المتوفر عند بدء عملية التحويل.
يجب ألا تكون هذه العملية ضرورية في ظل الظروف العادية، ولكن يمكن أن تساعد إذا واجهت ما يلي:
- ينتهي نظام المجموعة قبل نجاح إنشاء بيانات التعريف التلقائية.
- يؤدي الخطأ أو فشل الوظيفة إلى مقاطعة إنشاء بيانات التعريف.
- يكتب عميل لا يدعم UniForm Iceberg metadata gneration إلى جدول Delta.
استخدم بناء الجملة التالي لتشغيل إنشاء بيانات تعريف Iceberg يدويا:
MSCK REPAIR TABLE <table-name> SYNC METADATA
راجع جدول الإصلاح.
القراءة باستخدام مسار JSON لبيانات التعريف
يتطلب بعض عملاء Iceberg توفير مسار لملفات بيانات التعريف التي تم إصدارها لتسجيل جداول Iceberg الخارجية. في كل مرة يحول فيها UniForm إصدارا جديدا من جدول Delta إلى Iceberg، فإنه ينشئ ملف JSON لبيانات التعريف الجديدة.
يتضمن العملاء الذين يستخدمون مسارات JSON لبيانات التعريف لتكوين Iceberg BigQuery. راجع وثائق عميل قارئ Iceberg للحصول على تفاصيل التكوين.
تخزن Delta Lake بيانات تعريف Iceberg ضمن دليل الجدول، باستخدام النمط التالي:
<table-path>/metadata/<version-number>-<uuid>.metadata.json
في Azure Databricks، يمكنك مراجعة موقع بيانات التعريف هذا عن طريق القيام بأحد الإجراءات التالية:
- مراجعة القسم الذي
Delta Uniform Iceberg
تم إرجاعه بواسطةDESCRIBE EXTENDED table_name
. - مراجعة بيانات تعريف الجدول باستخدام مستكشف الكتالوج.
- استخدام الأمر التالي مع واجهة برمجة تطبيقات REST:
GET api/2.1/unity-catalog/tables/<catalog-name>.<schame-name>.<table-name>
يتضمن الرد المعلومات التالية:
{
...
"delta_uniform_iceberg": {
"metadata_location": "<cloud-storage-uri>/metadata/v<version-number>-<uuid>.metadata.json"
}
}
هام
قد يتطلب عملاء قارئ Iceberg المستند إلى المسار تحديث مسارات JSON لبيانات التعريف وتحديثها يدويا لقراءة إصدارات الجدول الحالية. قد يواجه المستخدمون أخطاء عند الاستعلام عن جداول Iceberg باستخدام إصدارات قديمة حيث تتم إزالة ملفات بيانات Parquet من جدول Delta باستخدام VACUUM
.
القراءة باستخدام نقطة نهاية كتالوج Unity Iceberg
يمكن لبعض عملاء Iceberg الاتصال بكتالوج Iceberg REST. يوفر كتالوج Unity تنفيذا للقراءة فقط لواجهة برمجة تطبيقات كتالوج Iceberg REST لجداول Delta مع تمكين UniForm باستخدام نقطة /api/2.1/unity-catalog/iceberg
النهاية . راجع مواصفات Iceberg REST API للحصول على تفاصيل حول استخدام واجهة برمجة تطبيقات REST هذه.
العملاء المعروفين بدعم واجهة برمجة تطبيقات كتالوج Iceberg تشمل Apache Spark وFlink و Trino. يجب تكوين الوصول إلى تخزين كائن السحابة الأساسي الذي يحتوي على جدول Delta مع تمكين UniForm. راجع وثائق عميل قارئ Iceberg للحصول على تفاصيل التكوين.
يجب إنشاء وتكوين رمز مميز للوصول الشخصي ل Azure Databricks للسماح للخدمات الأخرى بالاتصال بكتالوج Unity. راجع المصادقة لأتمتة Azure Databricks - نظرة عامة.
فيما يلي مثال على الإعدادات لتكوين OSS Apache Spark لقراءة UniForm ك Iceberg:
"spark.sql.extensions": "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions",
"spark.sql.catalog.unity"="org.apache.iceberg.spark.SparkCatalog",
"spark.sql.catalog.unity.catalog-impl": "org.apache.iceberg.rest.RESTCatalog",
"spark.sql.catalog.unity.uri": "<api-root>/api/2.1/unity-catalog/iceberg",
"spark.sql.catalog.unity.token":"<your_personal_access_token>",
"spark.sql.catalog.unity.io-impl": "org.apache.iceberg.aws.s3.S3FileIO
استبدل عنوان URL الكامل لمساحة العمل التي قمت فيها بإنشاء رمز الوصول الشخصي المميز ل <api-root>
.
إشعار
عند الاستعلام عن الجداول في كتالوج Unity باستخدام هذا الأسلوب، تستخدم معرفات الكائنات النمط التالي:
unity.<catalog-name>.<schema-name>.<table-name>
يستخدم هذا النمط نفس مسار الأسماء ثلاثي الطبقات الموجود في كتالوج Unity، ولكنه يضيف بادئة unity
إضافية .
إصدارات جدول Delta و Iceberg
يسمح كل من Delta Lake و Iceberg باستعلامات السفر عبر الوقت باستخدام إصدارات الجدول أو الطوابع الزمنية المخزنة في بيانات تعريف الجدول.
بشكل عام، لا تتم محاذاة إصدارات جدول Iceberg و Delta إما بواسطة الطابع الزمني للالتزام أو معرف الإصدار. إذا كنت ترغب في التحقق من إصدار جدول Delta الذي يتوافق مع إصدار معين من جدول Iceberg، يمكنك استخدام خصائص الجدول المقابلة التي تم تعيينها على جدول Iceberg. راجع التحقق من حالة إنشاء بيانات التعريف في Iceberg.
القيود
توجد القيود التالية:
- لا يعمل UniForm على الجداول مع تمكين متجهات الحذف. راجع ما هي متجهات الحذف؟.
- لا تدعم جداول Delta مع تمكين UniForm أنواعا
VOID
. - يمكن لعملاء Iceberg القراءة فقط من UniForm. عمليات الكتابة غير معتمدة.
- قد يكون لدى عملاء قارئ Iceberg قيود فردية، بغض النظر عن UniForm. راجع الوثائق الخاصة بالعميل الذي اخترته.
- يمكن لمستلمي Delta Sharing قراءة الجدول فقط على أنه Delta، حتى عند تمكين UniForm.
يعمل Change Data Feed لعملاء Delta عند تمكين UniForm، ولكن ليس لديه دعم في Iceberg.
بعض ميزات جدول Delta Lake المستخدمة من قبل UniForm غير معتمدة من قبل بعض عملاء قارئ Delta Sharing. راجع مشاركة البيانات والأصول الذكاء الاصطناعي بأمان باستخدام Delta Sharing.
الملاحظات
https://aka.ms/ContentUserFeedback.
قريبًا: خلال عام 2024، سنتخلص تدريجيًا من GitHub Issues بوصفها آلية إرسال ملاحظات للمحتوى ونستبدلها بنظام ملاحظات جديد. لمزيد من المعلومات، راجعإرسال الملاحظات وعرضها المتعلقة بـ