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


Adatbetöltési stratégiák dedikált SQL-készlethez az Azure Synapse Analyticsben

A hagyományos dedikált SMP SQL-készletek kinyerési, átalakítási és betöltési (ETL) folyamatot használnak az adatok betöltéséhez. A Synapse SQL az Azure Synapse Analyticsben elosztott lekérdezésfeldolgozási architektúrát használ, amely kihasználja a számítási és tárolási erőforrások méretezhetőségét és rugalmasságát.

A kinyerési, betöltési és átalakítási (ELT) folyamat beépített elosztott lekérdezésfeldolgozási képességeket használ, és kiküszöböli az adatátalakításhoz szükséges erőforrásokat a betöltés előtt.

Bár a dedikált SQL-készletek számos betöltési módszert támogatnak, például a népszerű SQL Server-beállításokat, például a bcp-t és az SqlBulkCopy API-t, az adatok betöltésének leggyorsabb és legskálázható módja a PolyBase külső táblái és a COPY utasítás.

A PolyBase és a COPY utasítás használatával az Azure Blob Storage-ban vagy az Azure Data Lake Store-ban tárolt külső adatokhoz a T-SQL nyelv használatával férhet hozzá. A legnagyobb rugalmasság érdekében a betöltéskor a COPY utasítás használatát javasoljuk.

Mi az az ELT?

A kinyerés, a betöltés és az átalakítás (ELT) egy olyan folyamat, amellyel az adatok kinyerhetők egy forrásrendszerből, betöltődnek egy dedikált SQL-készletbe, majd átalakítják őket.

Az ELT implementálásának alapvető lépései a következők:

  1. A forrásadatok kinyerése szövegfájlokba.
  2. Az adatok az Azure Blob Storage-ba vagy az Azure Data Lake Store-ba kerülnek.
  3. Készítse elő az adatokat a betöltéshez.
  4. Töltse be az adatokat átmeneti táblákba a PolyBase vagy a COPY paranccsal.
  5. Alakítsa át az adatokat.
  6. Adatok beszúrása az éles üzemi táblákba.

A betöltési oktatóanyagot az Azure Blob Storage-ból való adatok betöltése című témakörben talál.

1. A forrásadatok kinyerése szövegfájlokba

Az adatok forrásrendszerből való kiolvasása a tárolási helytől függ. A cél az adatok áthelyezése támogatott tagolt szövegbe vagy CSV-fájlokba.

Támogatott fájlformátumok

A PolyBase és a COPY utasítás használatával adatokat tölthet be az UTF-8 és az UTF-16 kódolt, tagolt szövegből vagy CSV-fájlokból. A tagolt szöveg- vagy CSV-fájlok mellett betölti a Hadoop fájlformátumokat, például az ORC-t és a Parquetet. A PolyBase és a COPY utasítás a Gzip és a Snappy tömörített fájljaiból is betölthet adatokat.

A kiterjesztett ASCII, a rögzített szélességű formátum és a beágyazott formátumok, például a WinZip vagy az XML nem támogatottak. Ha SQL Serverről exportál, a bcp parancssori eszközzel tagolt szövegfájlokba exportálhatja az adatokat.

2. Az adatok az Azure Blob Storage-ba vagy az Azure Data Lake Store-ba kerülnek

Ha az adatokat az Azure Storage-ban szeretné tárolni, áthelyezheti azOkat az Azure Blob Storage-ba vagy az Azure Data Lake Store Gen2-be. Az adatokat mindkét helyen szövegfájlokban kell tárolni. A PolyBase és a COPY utasítás mindkét helyről betölthető.

Az adatok Azure Storage-ba való áthelyezéséhez használható eszközök és szolgáltatások:

  • Az Azure ExpressRoute szolgáltatás javítja a hálózati teljesítményt, a teljesítményt és a kiszámíthatóságot. Az ExpressRoute egy szolgáltatás, amely egy dedikált privát kapcsolaton keresztül irányítja az adatokat az Azure-ba. Az ExpressRoute-kapcsolatok nem irányítják át az adatokat a nyilvános interneten keresztül. A kapcsolatok nagyobb megbízhatóságot, gyorsabb sebességet, alacsonyabb késést és nagyobb biztonságot nyújtanak, mint a nyilvános interneten keresztüli tipikus kapcsolatok.
  • Az AzCopy segédprogram a nyilvános interneten keresztül helyezi át az adatokat az Azure Storage-ba. Ez akkor működik, ha az adatméret kisebb, mint 10 TB. Ha rendszeresen szeretne terheléseket végezni az AzCopy használatával, tesztelje a hálózati sebességet, és ellenőrizze, hogy elfogadható-e.
  • Az Azure Data Factory (ADF) rendelkezik egy átjáróval, amelyet telepítheti a helyi kiszolgálóra. Ezután létrehozhat egy folyamatot, amellyel adatokat helyezhet át a helyi kiszolgálóról az Azure Storage-ba. A Data Factory dedikált SQL-készletekkel való használatához lásd : Adatok betöltése dedikált SQL-készletekhez.

3. Az adatok előkészítése a betöltéshez

Előfordulhat, hogy betöltés előtt elő kell készítenie és törölnie kell az adatokat a tárfiókban. Az adatok előkészítése akkor végezhető el, amikor az adatok a forrásban találhatók, miközben az adatokat szövegfájlokba exportálja, vagy miután az adatok az Azure Storage-ban találhatók. A legegyszerűbb, ha a folyamat elején a lehető leghamarabb dolgozik az adatokkal.

A táblák definiálása

Először határozza meg a dedikált SQL-készletben betöltött táblákat a COPY utasítás használatakor.

PolyBase használata esetén a betöltés előtt külső táblákat kell definiálnia a dedikált SQL-készletben. A PolyBase külső táblák használatával definiálja és éri el az adatokat az Azure Storage-ban. A külső táblák hasonlóak az adatbázisnézethez. A külső tábla tartalmazza a táblasémát, és a dedikált SQL-készleten kívül tárolt adatokra mutat.

A külső táblák meghatározásához meg kell adni az adatforrást, a szövegfájlok formátumát és a tábladefiníciókat. A szükséges T-SQL-szintaxis-referenciacikkek a következők:

Parquet-fájlok betöltésekor használja a következő SQL-adattípus-leképezést:

Parquet típusa Parquet logikai típus (széljegyzet) SQL-adattípus
LOGIKAI bit
BINÁRIS / BYTE_ARRAY varbinary
DUPLA lebeg
LEBEG valódi
INT32 Int
INT64 bigint
INT96 datetime2
FIXED_LEN_BYTE_ARRAY bináris
BINÁRIS UTF8 nvarchar
BINÁRIS STRING nvarchar
BINÁRIS ENUM nvarchar
BINÁRIS UUID uniqueidentifier
BINÁRIS DECIMAL tizedes
BINÁRIS JSON nvarchar(MAX)
BINÁRIS BSON varbinary(MAX)
FIXED_LEN_BYTE_ARRAY DECIMAL tizedes
BYTE_ARRAY INTERVAL varchar(MAX)
INT32 INT(8, true) smallint
INT32 INT(16, true) smallint
INT32 INT(32, true) Int
INT32 INT(8, false) tinyint
INT32 INT(16, false) Int
INT32 INT(32, false) bigint
INT32 DATE dátum
INT32 DECIMAL tizedes
INT32 TIME (MILLIS) Idő
INT64 INT(64, true) bigint
INT64 INT(64, false ) decimális(20,0)
INT64 DECIMAL tizedes
INT64 TIME (MILLIS) Idő
INT64 TIMESTAMP (MILLIS) datetime2
Összetett típus LIST varchar(max)
Összetett típus MAP varchar(max)

Fontos

  • A dedikált SQL-készletek jelenleg nem támogatják a Parquet-adattípusokat MICROS- és NANOS-pontossággal.
  • A következő hibát tapasztalhatja, ha a típusok nem egyeznek a Parquet és az SQL között, vagy ha nem támogatott Parquet-adattípusokkal rendelkezik: HdfsBridge::recordReaderFillBuffer - Unexpected error encountered filling record reader buffer: ClassCastException:...
  • A 0–127 tartományon kívüli érték betöltése a Parquet- és ORC-fájlformátum apró oszlopába nem támogatott.

Külső objektumok létrehozására példa: Külső táblák létrehozása.

Szövegfájlok formázása

PolyBase használata esetén a definiált külső objektumoknak a szövegfájlok sorait össze kell igazítaniuk a külső táblázattal és a fájlformátum definíciójával. A szövegfájl minden sorában lévő adatoknak igazodniuk kell a tábladefinícióhoz.

A szövegfájlok formázása:

  • Ha az adatok nem relációs forrásból származnak, sorokat és oszlopokat kell átalakítania. Függetlenül attól, hogy az adatok relációs vagy nem relációs forrásból származnak-e, az adatokat úgy kell átalakítani, hogy igazodjanak ahhoz a táblához tartozó oszlopdefiníciókhoz, amelyekbe be szeretné tölteni az adatokat.
  • A szövegfájlban lévő adatok formázása a céltábla oszlopaihoz és adattípusaihoz igazodva. A külső szövegfájlokban és a dedikált SQL-készlettáblában lévő adattípusok közötti eltérés miatt a sorok el lesznek utasítva a terhelés során.
  • A szövegfájl mezőinek elválasztása egy terminátorsal. Ügyeljen arra, hogy olyan karaktert vagy karaktersorozatot használjon, amely nem található a forrásadatokban. Használja a CREATE EXTERNAL FILE FORMAT (KÜLSŐ FÁJLFORMÁTUM LÉTREHOZÁSA) beállítással megadott terminátort.

4. Az adatok betöltése a PolyBase vagy a COPY utasítás használatával

Ajánlott az adatokat átmeneti táblába betölteni. Az előkészítési táblák lehetővé teszik a hibák kezelését anélkül, hogy beavatkozhat az éles táblákba. Az előkészítési tábla lehetővé teszi a dedikált SQL-készlet párhuzamos feldolgozási architektúrájának használatát az adatátalakításokhoz, mielőtt az adatokat éles táblákba szúrja be.

Betöltési lehetőségek

Az adatok betöltéséhez az alábbi betöltési lehetőségek bármelyikét használhatja:

  • A COPY utasítás az ajánlott betöltési segédprogram, mivel lehetővé teszi az adatok zökkenőmentes és rugalmas betöltését. Az utasítás számos további betöltési funkcióval rendelkezik, amelyeket a PolyBase nem biztosít. Tekintse meg a NY taxi cab COPY oktatóanyagot egy minta oktatóanyag futtatásához.
  • A T-SQL-vel rendelkező PolyBase használatához külső adatobjektumokat kell definiálnia.
  • A PolyBase és a COPY utasítás az Azure Data Factoryvel (ADF) egy másik vezénylési eszköz. Definiál egy folyamatot, és feladatokat ütemez.
  • Az SSIS-vel rendelkező PolyBase akkor működik jól, ha a forrásadatok az SQL Serveren találhatóak. Az SSIS meghatározza a céltábla-leképezések forrását, és a terhelést is vezényli. Ha már rendelkezik SSIS-csomagokkal, módosíthatja a csomagokat az új adattárház célhelyének megfelelően.
  • A PolyBase és az Azure Databricks adatokat továbbít egy táblából egy Databricks-adatkeretbe, és/vagy adatokat ír egy Databricks-adatkeretből egy táblába a PolyBase használatával.

Tekintse át az elérhető oktatóanyagokat:

Egyéb betöltési lehetőségek

A PolyBase és a COPY utasítás mellett használhatja a bcp-t vagy az SqlBulkCopy API-t is. A bcp segédprogram közvetlenül az adatbázisba töltődik be az Azure Blob Storage használata nélkül, és csak kis terhelésekre szolgál.

Feljegyzés

Ezeknek a beállításoknak a betöltési teljesítménye lassabb, mint a PolyBase és a COPY utasítás.

5. Az adatok átalakítása

Amíg az adatok az előkészítési táblában találhatóak, végezze el a számítási feladathoz szükséges átalakításokat. Ezután helyezze át az adatokat egy éles táblába.

6. Az adatok beszúrása éles táblákba

A BESZÚRÁS... A SELECT utasítás áthelyezi az adatokat az előkészítési táblából az állandó táblába.

Az ETL-folyamat tervezésekor próbálja meg futtatni a folyamatot egy kis tesztmintán. Próbáljon meg kinyerni 1000 sort a táblából egy fájlba, helyezze át az Azure-ba, majd próbálja meg betölteni egy előkészítési táblába.

Partnerbetöltési megoldások

Számos partnerünk rendelkezik betöltési megoldásokkal. További információért tekintse meg megoldáspartnereink listáját.

Következő lépés