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

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

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

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

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

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

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

لاحظ أنه لاستنتاج المخطط باستخدام COPY INTO، يجب تمرير خيارات إضافية:

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

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

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');

تحميل بيانات 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 في abfss://container@storageAccount.dfs.core.windows.net/deltaTables/target.

COPY INTO delta.`abfss://container@storageAccount.dfs.core.windows.net/deltaTables/target`
  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 delta.`abfss://container@storageAccount.dfs.core.windows.net/deltaTables/target`
  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'

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

إذا تعذرت قراءة البيانات التي تقوم بتحميلها بسبب مشكلة تلف، يمكن تخطي هذه الملفات عن طريق تعيين 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 وما فوق.