Megosztás a következőn keresztül:


Gyakori adatbetöltési minták COPY INTO

Ismerje meg a COPY INTO fájlforrásokból a Delta Lake-be való adatbetöltés gyakori mintáit.

A használatnak COPY INTOszámos lehetősége van. Az ideiglenes hitelesítő adatokat a COPY INTO használatával is használhatja ezekkel a mintákkal kombinálva.

Az összes lehetőség teljes hivatkozását a COPY INTO című témakörben találhatja meg.

Céltáblák létrehozása a következőhöz: COPY INTO

COPY INTO meg kell céloznia egy meglévő Delta-táblát.

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

A Databricks Runtime 11.3 LTS-ben és újabb verziókban a séma beállítása nem kötelező a séma fejlődését támogató formátumok esetében. A részletekért tekintse meg a sémakövetkeztetést és -fejlesztést a COPY INTO használatával.

JSON-adatok betöltése a következő használatával: COPY INTO

Az alábbi példa az Azure Data Lake Storage Gen2 (ADLS Gen2) öt fájljából tölt be JSON-adatokat a Delta nevű táblába my_json_data. Ezt a táblát a végrehajtás előtt COPY INTO létre kell hozni. Ha bármelyik adat már be lett töltve az egyik fájlból, az adatok nem töltődnek be újra az adott fájlhoz.

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-adatok betöltése COPY INTO

Az alábbi példa az Avro-adatokat az ADLS Gen2-ben tölti be további SQL-kifejezések használatával az SELECT utasítás részeként.

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-fájlok betöltése a következő használatával: COPY INTO

Az alábbi példa csv-fájlokat tölt be az Azure Data Lake Storage Gen2-ből abfss://container@storageAccount.dfs.core.windows.net/base/path/folder1 egy Delta-táblába.

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'

Sémakövetkeztetés és -fejlesztés a COPY INTO

Ez a szakasz példákat tartalmaz a sémakövetkeztetés és az evolúciós konfigurációk általános használatára COPY INTO.

Syntax

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

A következő FORMAT_OPTIONS lehetőségek állnak rendelkezésre a bemeneti séma automatikus következtetéséhez COPY INTO:

  • inferSchema: Az elemzési rekordok adattípusainak következtetése vagy annak feltételezése, hogy az összes oszlop az StringType.

  • mergeSchema: Azt határozza meg, hogy a sémát több forrásfájlra kívánja-e következtetni, és egyesíteni szeretné-e az egyes forrásfájlok sémáját.

    Ha a forrásfájlok sémája megegyezik, a Databricks a (false) fájl alapértelmezett beállításának FORMAT_OPTIONS mergeSchema használatát javasolja.

A célséma COPY INTOtovábbfejlesztéséhez a következők COPY_OPTIONS érhetők el:

  • mergeSchema: A cél Delta-tábla sémájának továbbfejlesztése a bemeneti séma alapján.

    Ha a bemeneti séma és a célséma megegyezik, mergeSchema akkor lehet false benne COPY_OPTIONS.

CSV-séma következtetése és fejlesztése

Az alábbi példa létrehoz egy séma nélküli Delta-táblát, amely egy my_pipe_data fejléccel elválasztott CSV-t tölt be.

mergeSchema azért van benne true FORMAT_OPTIONS , mert a bemeneti fájlok fejléc- vagy elválasztó eltérései lehetnek.

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

Sérült fájlok figyelmen kívül hagyása adatok betöltésekor

Ha a betöltött adatok valamilyen sérülés miatt nem olvashatók be, a fájlok kihagyhatók a következő beállítással ignoreCorruptFiles true : .FORMAT_OPTIONS>

A parancs eredménye azt COPY INTO adja vissza, hogy hány fájlt hagyott ki az num_skipped_corrupt_files oszlop sérülése miatt. Ez a metrika a operationMetrics Delta-táblán való futtatás DESCRIBE HISTORY után az oszlopban numSkippedCorruptFiles is megjelenik.

A sérült fájlokat nem követi nyomon COPY INTOa rendszer, ezért a sérülés kijavítása után újra betölthetők. A módban való futtatással COPY INTO VALIDATE láthatja, hogy mely fájlok sérültek.

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

Feljegyzés

ignoreCorruptFiles a Databricks Runtime 11.3 LTS-ben és újabb verziókban érhető el.