Běžné vzory načítání dat pomocí COPY INTO
Seznamte se s běžnými vzory pro načtení COPY INTO
dat ze zdrojů souborů do Delta Lake.
Existuje mnoho možností pro použití COPY INTO
. V kombinaci s těmito vzory můžete také použít dočasné přihlašovací údaje se službou COPY INTO .
Úplný odkaz na všechny možnosti najdete v tématu COPY INTO .
Vytvoření cílových tabulek pro COPY INTO
COPY INTO
musí cílit na existující tabulku Delta.
CREATE TABLE IF NOT EXISTS my_table
[(col_1 col_1_type, col_2 col_2_type, ...)]
[COMMENT <table-description>]
[TBLPROPERTIES (<table-properties>)];
Ve verzi Databricks Runtime 11.3 LTS a vyšší je nastavení schématu pro tyto tabulky volitelné pro formáty, které podporují vývoj schématu. Podrobnosti najdete v tématu Odvozování schématu a vývoj pomocí funkce COPY INTO .
Načtení dat JSON pomocí COPY INTO
Následující příklad načte data JSON z pěti souborů v Azure Data Lake Storage Gen2 (ADLS Gen2) do tabulky Delta s názvem my_json_data
. Tuto tabulku je nutné vytvořit před COPY INTO
spuštěním. Pokud už některá data byla načtena z jednoho ze souborů, nebudou se data pro tento soubor znovu načítat.
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')
Načtení dat Avro pomocí COPY INTO
Následující příklad načte data Avro v ADLS Gen2 pomocí dalších výrazů SQL jako součást SELECT
příkazu.
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
Načtení souborů CSV pomocí COPY INTO
Následující příklad načte soubory CSV z Azure Data Lake Storage Gen2 do abfss://container@storageAccount.dfs.core.windows.net/base/path/folder1
tabulky 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'
Odvození schématu a vývoj pomocí COPY INTO
Tato část obsahuje příklady pro běžné odvozování schématu a vývojové konfigurace pomocí COPY INTO
.
Syntaxe
COPY INTO my_table
FROM '/path/to/files'
FILEFORMAT = <format>
FORMAT_OPTIONS ('inferSchema' = 'true', `mergeSchema` = `true`)
COPY_OPTIONS ('mergeSchema' = 'true');
Následující FORMAT_OPTIONS
možnosti jsou k dispozici pro automatické odvození vstupního schématu pomocí COPY INTO
:
inferSchema
: Zda chcete odvodit datové typy analyzovaných záznamů nebo předpokládat, že všechny sloupce jsou .StringType
mergeSchema
: Zda se má schéma odvodit napříč více zdrojovými soubory a sloučit schéma každého zdrojového souboru.Pokud mají zdrojové soubory stejné schéma, databricks doporučuje použít výchozí nastavení pro
mergeSchema
hodnotu inFORMAT_OPTIONS
(false
).
K dispozici jsou následující COPY_OPTIONS
možnosti pro vývoj cílového schématu:COPY INTO
mergeSchema
: Zda se má vyvíjet schéma cílové tabulky Delta na základě vstupního schématu.Pokud je vstupní schéma a cílové schéma stejné,
mergeSchema
může býtfalse
vCOPY_OPTIONS
.
Odvození a vývoj schématu CSV
Následující příklad vytvoří tabulku Delta bez schématu s názvem my_pipe_data
a načte csv s oddělovači s oddělovači se záhlavím.
mergeSchema
je true
v FORMAT_OPTIONS
důsledku toho, že vstupní soubory můžou mít rozdíly v záhlaví nebo oddělovači.
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');
Ignorování poškozených souborů při načítání dat
Pokud data, která načítáte, nejde přečíst kvůli nějakému problému s poškozením, je možné tyto soubory přeskočit nastavením ignoreCorruptFiles
v true
souboru FORMAT_OPTIONS
.
Výsledek příkazu vrátí počet přeskočených COPY INTO
souborů kvůli poškození ve num_skipped_corrupt_files
sloupci. Tato metrika se také zobrazuje ve operationMetrics
sloupci pod numSkippedCorruptFiles
spuštěním DESCRIBE HISTORY
v tabulce Delta.
Poškozené soubory nejsou sledovány COPY INTO
, takže je možné je znovu načíst v následném spuštění, pokud je poškození opraveno. Můžete zjistit, které soubory jsou poškozené spuštěním COPY INTO
v VALIDATE
režimu.
COPY INTO my_table
FROM '/path/to/files'
FILEFORMAT = <format>
[VALIDATE ALL]
FORMAT_OPTIONS ('ignoreCorruptFiles' = 'true')
Poznámka:
ignoreCorruptFiles
je k dispozici v Databricks Runtime 11.3 LTS a vyšší.