استنساخ جداول Parquet و Iceberg بشكل متزايد إلى Delta Lake

يمكنك استخدام وظيفة استنساخ Azure Databricks لتحويل البيانات بشكل متزايد من مصادر بيانات Parquet أو Iceberg إلى جداول دلتا المدارة أو الخارجية.

يجمع استنساخ Azure Databricks ل Parquet و Iceberg بين الوظائف المستخدمة لاستنساخ جداول Delta وتحويل الجداول إلى Delta Lake. توضح هذه المقالة حالات الاستخدام والقيود لهذه الميزة وتوفر أمثلة.

هام

هذه الميزة في المعاينة العامة.

إشعار

تتطلب هذه الميزة Databricks Runtime 11.3 LTS أو أعلى.

متى تستخدم الاستنساخ لاستيعاب بيانات Parquet أو Iceberg بشكل متزايد

يوفر Azure Databricks عددا من الخيارات لاستيعاب البيانات في مستودع البيانات. توصي Databricks باستخدام النسخ لاستيعاب بيانات Parquet أو Iceberg في الحالات التالية:

إشعار

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

  • تقوم بإجراء ترحيل من Parquet أو Iceberg إلى Delta Lake، ولكنك تحتاج إلى الاستمرار في استخدام جداول المصدر.
  • تحتاج إلى الاحتفاظ بمزامنة استيعاب فقط بين جدول هدف وجدول مصدر إنتاج يتلقى الإلحاقات والتحديثات والحذف.
  • تريد إنشاء لقطة متوافقة مع ACID لبيانات المصدر لإعداد التقارير أو التعلم الآلي أو دفعة ETL.

ما هو بناء الجملة للنسخ؟

يستخدم استنساخ ل Parquet و Iceberg نفس بناء الجملة الأساسي المستخدم لاستنساخ جداول Delta، مع دعم النسخ الضحلة والعميقة. لمزيد من المعلومات، راجع استنساخ الأنواع.

توصي Databricks باستخدام النسخ بشكل متزايد لمعظم أحمال العمل. يستخدم دعم النسخ ل Parquet و Iceberg بناء جملة SQL.

إشعار

الاستنساخ ل Parquet و Iceberg له متطلبات وضمانات مختلفة عن النسخ أو التحويل إلى Delta. راجع متطلبات وقيود استنساخ جداول Parquet و Iceberg.

لنسخ جدول Parquet أو Iceberg بعمق باستخدام مسار ملف، استخدم بناء الجملة التالي:

CREATE OR REPLACE TABLE <target-table-name> CLONE parquet.`/path/to/data`;

CREATE OR REPLACE TABLE <target-table-name> CLONE iceberg.`/path/to/data`;

لنسخ جدول Parquet أو Iceberg الضحل باستخدام مسار ملف، استخدم بناء الجملة التالي:

CREATE OR REPLACE TABLE <target-table-name> SHALLOW CLONE parquet.`/path/to/data`;

CREATE OR REPLACE TABLE <target-table-name> SHALLOW CLONE iceberg.`/path/to/data`;

يمكنك أيضا إنشاء نسخ عميقة أو ضحلة لجداول Parquet المسجلة في metastore، كما هو موضح في الأمثلة التالية:

CREATE OR REPLACE TABLE <target-table-name> CLONE <source-table-name>;

CREATE OR REPLACE TABLE <target-table-name> SHALLOW CLONE <source-table-name>;

متطلبات وقيود استنساخ جداول Parquet و Iceberg

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

تنطبق القيود الإضافية التالية عند استخدام النسخ مع جداول Parquet و Iceberg:

  • يجب عليك تسجيل جداول Parquet مع أقسام إلى كتالوج مثل كتالوج Unity أو Metastore Hive القديم قبل استنساخ واستخدام اسم الجدول ل idenfity الجدول المصدر. لا يمكنك استخدام بناء جملة الاستنساخ المستند إلى المسار لجداول Parquet مع الأقسام.
  • لا يمكنك استنساخ جداول Iceberg التي شهدت تطور القسم.
  • لا يمكنك استنساخ جداول الدمج عند القراءة في Iceberg التي شهدت تحديثات أو عمليات حذف أو عمليات دمج.
  • فيما يلي قيود لنسخ جداول Iceberg مع أقسام محددة على الأعمدة المقتطعة:
    • في Databricks Runtime 12.2 LTS وما يلي، نوع العمود المقتطع الوحيد المدعوم هو string.
    • في Databricks Runtime 13.3 LTS وما فوق، يمكنك العمل مع أعمدة مقتطعة من أنواع stringأو longأو int.
    • لا يدعم Azure Databricks العمل مع الأعمدة المقتطعة من النوع decimal.
  • يتزامن النسخ التزايدي مع تغييرات المخطط والخصائص من الجدول المصدر. يتم تجاوز أي تغييرات في المخطط وملفات البيانات المكتوبة مباشرة إلى الجدول المستنسخ.
  • لا يدعم كتالوج Unity النسخ الضحلة لجداول Parquet أو Iceberg.
  • لا يمكنك استخدام أنماط glob عند تعريف مسار.

إشعار

في Databricks Runtime 11.3 LTS، لا تجمع هذه العملية إحصائيات على مستوى الملف. على هذا النحو، لا تستفيد الجداول المستهدفة من تخطي بيانات Delta Lake. يتم جمع الإحصائيات على مستوى الملف في Databricks Runtime 12.2 LTS وما فوق.