أنماط تحميل البيانات الشائعة باستخدام COPY INTO

تعرف على الأنماط الشائعة لاستخدام COPY INTO لتحميل البيانات من مصادر الملفات إلى Delta Lake.

هناك العديد من الخيارات لاستخدام COPY INTO. يمكنك أيضا استخدام بيانات الاعتماد المؤقتة مع COPY INTO مع هذه الأنماط.

راجع COPY INTO للحصول على مرجع كامل لجميع الخيارات.

إنشاء جداول الهدف ل COPY INTO

COPY INTO يجب أن يستهدف جدول Delta موجود.

CREATE TABLE IF NOT EXISTS my_table
[(col_1 col_1_type, col_2 col_2_type, ...)]
[COMMENT <table-description>]
[TBLPROPERTIES (<table-properties>)];

في Databricks Runtime 11.3 LTS وما فوق، يعد تعيين المخطط لهذه الجداول اختياريا للتنسيقات التي تدعم تطور المخطط. راجع استنتاج المخطط وتطوره باستخدام COPY INTO للحصول على التفاصيل.

تحميل بيانات JSON باستخدام COPY INTO

يقوم المثال التالي بتحميل بيانات JSON من خمسة ملفات في Azure Data Lake Storage Gen2 (ADLS Gen2) في جدول Delta المسمى my_json_data. يجب إنشاء هذا الجدول قبل COPY INTO تنفيذه. إذا تم تحميل أي بيانات بالفعل من أحد الملفات، فلن يتم إعادة تحميل البيانات لهذا الملف.

COPY INTO my_json_data
  FROM 'abfss://container@storageAccount.dfs.core.windows.net/base/path'
  FILEFORMAT = JSON
  FILES = ('f1.json', 'f2.json', 'f3.json', 'f4.json', 'f5.json')

 -- The second execution will not copy any data since the first command already loaded the data
 COPY INTO my_json_data
   FROM 'abfss://container@storageAccount.dfs.core.windows.net/base/path'
   FILEFORMAT = JSON
   FILES = ('f1.json', 'f2.json', 'f3.json', 'f4.json', 'f5.json')

تحميل بيانات Avro باستخدام COPY INTO

يقوم المثال التالي بتحميل بيانات Avro في ADLS Gen2 باستخدام تعبيرات SQL إضافية كجزء من العبارة SELECT .

COPY INTO my_delta_table
  FROM (SELECT to_date(dt) dt, event as measurement, quantity::double
          FROM 'abfss://container@storageAccount.dfs.core.windows.net/base/path')
  FILEFORMAT = AVRO

تحميل ملفات CSV باستخدام COPY INTO

يقوم المثال التالي بتحميل ملفات CSV من Azure Data Lake Storage Gen2 ضمن abfss://container@storageAccount.dfs.core.windows.net/base/path/folder1 في جدول Delta.

COPY INTO target_table
  FROM (SELECT key, index, textData, 'constant_value'
          FROM 'abfss://container@storageAccount.dfs.core.windows.net/base/path')
  FILEFORMAT = CSV
  PATTERN = 'folder1/file_[a-g].csv'
  FORMAT_OPTIONS('header' = 'true')

-- The example below loads CSV files without headers in ADLS Gen2 using COPY INTO.
-- By casting the data and renaming the columns, you can put the data in the schema you want
COPY INTO target_table
  FROM (SELECT _c0::bigint key, _c1::int index, _c2 textData
        FROM 'abfss://container@storageAccount.dfs.core.windows.net/base/path')
  FILEFORMAT = CSV
  PATTERN = 'folder1/file_[a-g].csv'

استنتاج المخطط وتطوره باستخدام COPY INTO

يوفر هذا القسم أمثلة لاستدلال المخطط الشائع وتكوينات التطور باستخدام COPY INTO.

بناء الجملة

COPY INTO my_table
FROM '/path/to/files'
FILEFORMAT = <format>
FORMAT_OPTIONS ('inferSchema' = 'true', `mergeSchema` = `true`)
COPY_OPTIONS ('mergeSchema' = 'true');

يتوفر ما يلي FORMAT_OPTIONS للاستدلال على مخطط الإدخال تلقائيا باستخدام COPY INTO:

  • inferSchema: ما إذا كنت تريد استنتاج أنواع بيانات السجلات التي تم تحليلها أو افتراض أن جميع الأعمدة هي من StringType.

  • mergeSchema: ما إذا كنت تريد استنتاج المخطط عبر ملفات مصدر متعددة ودمج مخطط كل ملف مصدر.

    إذا كانت الملفات المصدر لها نفس المخطط، فإن Databricks توصي باستخدام الإعداد الافتراضي ل mergeSchema في FORMAT_OPTIONS (false).

يتوفر ما يلي COPY_OPTIONS لتطوير المخطط الهدف باستخدام COPY INTO:

  • mergeSchema: ما إذا كان سيتم تطوير مخطط جدول Delta الهدف استنادا إلى مخطط الإدخال.

    إذا كان مخطط الإدخال والمخطط الهدف متماثلين، mergeSchema يمكن أن يكونا false في COPY_OPTIONS.

الاستدلال على مخطط CSV وتطويره

ينشئ المثال التالي جدول Delta بلا مخطط يسمى my_pipe_data ويحمل CSV محددة بالأنابيب بعنوان.

mergeSchemaFORMAT_OPTIONS لأن true ملفات الإدخال قد تحتوي على اختلافات رأس أو محدد.

CREATE TABLE IF NOT EXISTS my_pipe_data;

COPY INTO my_pipe_data
  FROM 'abfss://container@storageAccount.dfs.core.windows.net/base/path'
  FILEFORMAT = CSV
  FORMAT_OPTIONS ('mergeSchema' = 'true',
                  'delimiter' = '|',
                  'header' = 'true')
  COPY_OPTIONS ('mergeSchema' = 'true');

تجاهل الملفات التالفة أثناء تحميل البيانات

إذا تعذرت قراءة البيانات التي تقوم بتحميلها بسبب مشكلة تلف، يمكن تخطي هذه الملفات عن طريق تعيين ignoreCorruptFiles إلى true في FORMAT_OPTIONS.

ترجع نتيجة الأمر عدد الملفات التي COPY INTO تم تخطيها بسبب تلف في num_skipped_corrupt_files العمود. يظهر هذا المقياس أيضا في operationMetrics العمود ضمن numSkippedCorruptFiles بعد التشغيل DESCRIBE HISTORY على جدول Delta.

لا يتم تعقب الملفات التالفة بواسطة COPY INTO، لذلك يمكن إعادة تحميلها في تشغيل لاحق إذا تم إصلاح التلف. يمكنك معرفة الملفات التالفة عن طريق التشغيل COPY INTO في VALIDATE الوضع.

COPY INTO my_table
FROM '/path/to/files'
FILEFORMAT = <format>
[VALIDATE ALL]
FORMAT_OPTIONS ('ignoreCorruptFiles' = 'true')

إشعار

ignoreCorruptFiles متوفر في Databricks Runtime 11.3 LTS وما فوق.