Pola pemuatan data umum menggunakan COPY INTO
Pelajari pola umum untuk menggunakan COPY INTO
untuk memuat data dari sumber file ke Delta Lake.
Ada banyak opsi untuk menggunakan COPY INTO
. Anda juga dapat menggunakan kredensial sementara dengan COPY INTO dalam kombinasi dengan pola ini.
Lihat COPY INTO untuk referensi lengkap semua opsi.
Membuat tabel target untuk COPY INTO
COPY INTO
harus menargetkan tabel Delta yang ada. Dalam Databricks Runtime 11.3 LTS ke atas, mengatur skema untuk tabel ini bersifat opsional untuk format yang mendukung evolusi skema:
CREATE TABLE IF NOT EXISTS my_table
[(col_1 col_1_type, col_2 col_2_type, ...)]
[COMMENT <table-description>]
[TBLPROPERTIES (<table-properties>)];
Perhatikan bahwa untuk menyimpulkan skema dengan COPY INTO
, Anda harus meneruskan opsi tambahan:
COPY INTO my_table
FROM '/path/to/files'
FILEFORMAT = <format>
FORMAT_OPTIONS ('inferSchema' = 'true')
COPY_OPTIONS ('mergeSchema' = 'true');
Contoh berikut membuat tabel Delta tanpa skema yang disebut my_pipe_data
dan memuat CSV yang dibatasi pipa dengan header:
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');
Memuat data JSON dengan COPY INTO
Contoh berikut memuat data JSON dari lima file di Azure Data Lake Storage Gen2 (ADLS Gen2) ke dalam tabel Delta yang disebut my_json_data
. Tabel ini harus dibuat sebelum COPY INTO
dapat dieksekusi. Jika ada data yang sudah dimuat dari salah satu file, data tidak akan dimuat ulang untuk file tersebut.
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')
Muat data Avro dengan COPY INTO
Contoh berikut memuat data Avro di ADLS Gen2 menggunakan ekspresi SQL tambahan sebagai bagian SELECT
dari pernyataan.
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
Muat file CSV dengan COPY INTO
Contoh berikut memuat file CSV dari Azure Data Lake Storage Gen2 di bawah abfss://container@storageAccount.dfs.core.windows.net/base/path/folder1
ke dalam tabel Delta di 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'
Abaikan file yang rusak saat memuat data
Jika data yang Anda muat tidak dapat dibaca karena beberapa masalah kerusakan, file-file tersebut FORMAT_OPTIONS
dapat dilewati dengan mengatur ignoreCorruptFiles
ke true
di .
Hasil perintah COPY INTO
mengembalikan berapa banyak file yang dilewati karena kerusakan di num_skipped_corrupt_files
kolom. Metrik ini juga muncul di kolom di operationMetrics
bawah numSkippedCorruptFiles
setelah berjalan DESCRIBE HISTORY
pada tabel Delta.
File yang rusak tidak dilacak oleh COPY INTO
, sehingga dapat dimuat ulang dalam proses berikutnya jika kerusakan diperbaiki. Anda dapat melihat file mana yang rusak dengan berjalan COPY INTO
dalam VALIDATE
mode.
COPY INTO my_table
FROM '/path/to/files'
FILEFORMAT = <format>
[VALIDATE ALL]
FORMAT_OPTIONS ('ignoreCorruptFiles' = 'true')
Catatan
ignoreCorruptFiles
tersedia di Databricks Runtime 11.3 LTS ke atas.