Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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:
- A forrásadatok kinyerése szövegfájlokba.
- Az adatok az Azure Blob Storage-ba vagy az Azure Data Lake Store-ba kerülnek.
- Készítse elő az adatokat a betöltéshez.
- Töltse be az adatokat átmeneti táblákba a PolyBase vagy a COPY paranccsal.
- Alakítsa át az adatokat.
- 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:
- Oktatóanyag: Külső adatok betöltése a Microsoft Entra ID használatával
- Oktatóanyag: Külső adatok betöltése felügyelt identitással
- Oktatóanyag: A New York Taxicab-adatkészlet betöltése
- Oktatóanyag: Adatok betöltése az Azure Synapse Analytics SQL-készletbe
- A Contoso kiskereskedelmi adatainak betöltése dedikált SQL-készletekbe az Azure Synapse Analyticsben
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.