Adatok migrálása az Amazon S3-ból az Azure Data Lake Storage Gen2-be
A következőkre vonatkozik: Azure Data Factory Azure Synapse Analytics
Tipp.
Próbálja ki a Data Factoryt a Microsoft Fabricben, amely egy teljes körű elemzési megoldás a nagyvállalatok számára. A Microsoft Fabric az adattovábbítástól az adatelemzésig, a valós idejű elemzésig, az üzleti intelligenciáig és a jelentéskészítésig mindent lefed. Ismerje meg, hogyan indíthat új próbaverziót ingyenesen!
A sablonok segítségével több száz millió fájlból álló petabájtnyi adatot migrálhat az Amazon S3-ból az Azure Data Lake Storage Gen2-be.
Megjegyzés:
Ha kis adatmennyiséget szeretne az AWS S3-ból az Azure-ba másolni (például 10 TB-nál kevesebbet), hatékonyabb és egyszerűbb az Azure Data Factory Adatmásolási eszközének használata. A cikkben ismertetett sablon több, mint amire szüksége van.
A megoldássablonok ismertetése
Az adatpartíció különösen 10 TB-nál több adat áttelepítése esetén ajánlott. Az adatok particionálásához használja az "előtag" beállítást az Amazon S3 mappáinak és fájljainak név szerinti szűréséhez, majd minden ADF-másolási feladat egyszerre egy partíciót másolhat. A jobb átviteli sebesség érdekében egyszerre több ADF másolási feladatot is futtathat.
Az adatmigráláshoz általában egyszeri előzményadat-migrálás szükséges, valamint az AWS S3-ról az Azure-ra történő módosítások rendszeres szinkronizálása. Az alábbiakban két sablon található, amelyek közül az egyik az egyszeri előzményadat-migrálást, a másik pedig az AWS S3 és az Azure módosításainak szinkronizálását ismerteti.
Az előzményadatok Amazon S3-ból az Azure Data Lake Storage Gen2-be való migrálásához
Ez a sablon (sablonnév: előzményadatok áttelepítése az AWS S3-ból az Azure Data Lake Storage Gen2-be) feltételezi, hogy egy partíciólistát írt egy külső vezérlőtáblában az Azure SQL Database-ben. Ezért keresési tevékenység használatával lekéri a partíciólistát a külső vezérlőtáblából, iterálja át az egyes partíciókat, és minden ADF-másolási feladat egyszerre egy partíciót másoljon. Miután minden másolási feladat befejeződött, a Tárolt eljárás tevékenység használatával frissíti a vezérlőtáblában lévő egyes partíciók másolásának állapotát.
A sablon öt tevékenységet tartalmaz:
- A Lookup lekéri azokat a partíciókat, amelyeket nem másoltak át az Azure Data Lake Storage Gen2-be egy külső vezérlőtáblából. A tábla neve s3_partition_control_table, és a táblából adatokat betölteni kívánt lekérdezés a következő: "Standard kiadás LECT PartitionPrefix FROM s3_partition_control_table WHERE SuccessOrFailure = 0".
- A ForEach lekéri a partíciólistát a Keresési tevékenységből, és iterálja az egyes partíciókat a TriggerCopy-tevékenységhez . Beállíthatja, hogy a batchCount egyszerre több ADF másolási feladatot fusson. Ebben a sablonban beállítottuk a 2-et.
- Az ExecutePipeline a CopyFolderPartitionFromS3 folyamatot hajtja végre. Azért hozunk létre egy másik folyamatot, hogy minden másolási feladat egy partíciót másoljon, mert így könnyen újrafuttathatja a sikertelen másolási feladatot, hogy újra betöltse az adott partíciót az AWS S3-ból. A többi partíciót betöltő másolási feladatok nem lesznek hatással.
- Másolja az egyes partíciókat az AWS S3-ból az Azure Data Lake Storage Gen2-be.
- Az SqlServerStoredProcedure frissíti a vezérlőtábla egyes partícióinak másolásának állapotát.
A sablon két paramétert tartalmaz:
- AWS_S3_bucketName a gyűjtő neve az AWS S3-on, ahonnan adatokat szeretne migrálni. Ha több gyűjtőből szeretne adatokat migrálni az AWS S3-on, hozzáadhat még egy oszlopot a külső vezérlőtáblához az egyes partíciók gyűjtőnevének tárolásához, és a folyamat frissítésével ennek megfelelően adatokat is lekérhet az adott oszlopból.
- Azure_Storage_fileSystem a fájlrendszer neve az Azure Data Lake Storage Gen2-ben, ahová át szeretné migrálni az adatokat.
Ahhoz, hogy a sablon csak az Amazon S3-ból az Azure Data Lake Storage Gen2-be másolja a módosított fájlokat
Ez a sablon (sablonnév: változásadatok másolása az AWS S3-ból az Azure Data Lake Storage Gen2-be) az egyes fájlok LastModifiedTime használatával csak az AWS S3-ból az Azure-ba másolja az új vagy frissített fájlokat. Vegye figyelembe, hogy a fájlok vagy mappák időszeleteléses adatokkal vannak particionálva az AWS S3 fájl- vagy mappanevének részeként (például /yyyy/mm/dd/file.csv), az oktatóanyagban az új fájlok növekményes betöltésének hatékonyabb megközelítését érheti el. Ez a sablon feltételezi, hogy egy partíciólistát írt egy külső vezérlőtáblában az Azure SQL Database-ben. Ezért keresési tevékenység használatával lekéri a partíciólistát a külső vezérlőtáblából, iterálja át az egyes partíciókat, és minden ADF-másolási feladat egyszerre egy partíciót másoljon. Amikor minden másolási feladat elkezdi a fájlok másolását az AWS S3-ból, a LastModifiedTime tulajdonságra támaszkodik, hogy csak az új vagy frissített fájlokat azonosítsa és másolja. Miután minden másolási feladat befejeződött, a Tárolt eljárás tevékenység használatával frissíti a vezérlőtáblában lévő egyes partíciók másolásának állapotát.
A sablon hét tevékenységet tartalmaz:
- A Lookup egy külső vezérlőtáblából kéri le a partíciókat. A tábla neve s3_partition_delta_control_table, és a táblából adatokat betölteni kívánt lekérdezés a "select distinct PartitionPrefix from s3_partition_delta_control_table".
- A ForEach lekéri a partíciólistát a Keresési tevékenységből, és iterálja az egyes partíciókat az TriggerDeltaCopy-tevékenységhez . Beállíthatja, hogy a batchCount egyszerre több ADF másolási feladatot fusson. Ebben a sablonban beállítottuk a 2-et.
- Az ExecutePipeline végrehajtja a DeltaCopyFolderPartitionFromS3 folyamatot. Azért hozunk létre egy másik folyamatot, hogy minden másolási feladat egy partíciót másoljon, mert így könnyen újrafuttathatja a sikertelen másolási feladatot, hogy újra betöltse az adott partíciót az AWS S3-ból. A többi partíciót betöltő másolási feladatok nem lesznek hatással.
- A Lookup lekéri az utolsó másolási feladat futási idejét a külső vezérlőtáblából, hogy az új vagy frissített fájlok azonosíthatók legyenek a LastModifiedTime használatával. A tábla neve s3_partition_delta_control_table, és a táblából adatokat betölteni kívánt lekérdezés a következő: "select max(JobRunTime) as LastModifiedTime from s3_partition_delta_control_table where PartitionPrefix = '@{pipeline().parameters.prefixStr}' és SuccessOrFailure = 1".
- Az új vagy módosított fájlok másolása csak minden partícióhoz az AWS S3-ból az Azure Data Lake Storage Gen2-be. A modifiedDatetimeStart tulajdonság az utolsó másolási feladat futási idejére van állítva. A modifiedDatetimeEnd tulajdonság az aktuális másolási feladat futási idejére van állítva. Vegye figyelembe, hogy az idő az UTC időzónára van alkalmazva.
- Az SqlServerStoredProcedure frissíti az egyes partíciók másolásának és a másolási futtatási idő állapotát a vezérlőtáblában, ha az sikeres. A SuccessOrFailure oszlop értéke 1.
- Az SqlServerStoredProcedure frissíti az egyes partíciók másolásának és a másolási futtatási idő állapotának frissítését a vezérlőtáblában, ha az sikertelen. A SuccessOrFailure oszlop értéke 0.
A sablon két paramétert tartalmaz:
- AWS_S3_bucketName a gyűjtő neve az AWS S3-on, ahonnan adatokat szeretne migrálni. Ha több gyűjtőből szeretne adatokat migrálni az AWS S3-on, hozzáadhat még egy oszlopot a külső vezérlőtáblához az egyes partíciók gyűjtőnevének tárolásához, és a folyamat frissítésével ennek megfelelően adatokat is lekérhet az adott oszlopból.
- Azure_Storage_fileSystem a fájlrendszer neve az Azure Data Lake Storage Gen2-ben, ahová át szeretné migrálni az adatokat.
A két megoldássablon használata
Az előzményadatok Amazon S3-ból az Azure Data Lake Storage Gen2-be való migrálásához
Hozzon létre egy vezérlőtáblát az Azure SQL Database-ben az AWS S3 partíciólistájának tárolásához.
Megjegyzés:
A tábla neve s3_partition_control_table. A vezérlőtábla sémája a PartitionPrefix és a SuccessOrFailure, ahol a PartitionPrefix az Előtag beállítás az S3-ban az Amazon S3 mappáinak és fájljainak név szerinti szűréséhez, a SuccessOrFailure pedig az egyes partíciók másolásának állapota: 0 azt jelenti, hogy a partíció nem lett átmásolva az Azure-ba, az 1 pedig azt jelenti, hogy ezt a partíciót sikeresen átmásolta az Azure-ba. A vezérlőtáblában 5 partíció van definiálva, és az egyes partíciók másolásának alapértelmezett állapota 0.
CREATE TABLE [dbo].[s3_partition_control_table]( [PartitionPrefix] [varchar](255) NULL, [SuccessOrFailure] [bit] NULL ) INSERT INTO s3_partition_control_table (PartitionPrefix, SuccessOrFailure) VALUES ('a', 0), ('b', 0), ('c', 0), ('d', 0), ('e', 0);
Hozzon létre egy tárolt eljárást ugyanazon az Azure SQL Database-en a vezérlőtáblához.
Megjegyzés:
A tárolt eljárás neve sp_update_partition_success. Ezt az SqlServerStoredProcedure-tevékenység fogja meghívni az ADF-folyamatban.
CREATE PROCEDURE [dbo].[sp_update_partition_success] @PartPrefix varchar(255) AS BEGIN UPDATE s3_partition_control_table SET [SuccessOrFailure] = 1 WHERE [PartitionPrefix] = @PartPrefix END GO
Lépjen az előzményadatok migrálása az AWS S3-ból az Azure Data Lake Storage Gen2-sablonba . Adja meg a külső vezérlőtáblához, az AWS S3-hoz adatforrástárként, céltárolóként pedig az Azure Data Lake Storage Gen2-hez tartozó kapcsolatokat. Vegye figyelembe, hogy a külső vezérlőtábla és a tárolt eljárás ugyanarra a kapcsolatra hivatkozik.
Kattintson a Sablon használata lehetőségre.
A következő példában látható, hogy 2 folyamat és 3 adatkészlet jött létre:
Lépjen a "BulkCopyFromS3" folyamatra, és válassza a Hibakeresés lehetőséget, írja be a paramétereket. Ezután válassza a Befejezés lehetőséget.
Az alábbi példához hasonló eredmények jelennek meg:
Ahhoz, hogy a sablon csak az Amazon S3-ból az Azure Data Lake Storage Gen2-be másolja a módosított fájlokat
Hozzon létre egy vezérlőtáblát az Azure SQL Database-ben az AWS S3 partíciólistájának tárolásához.
Megjegyzés:
A tábla neve s3_partition_delta_control_table. A vezérlőtábla sémája a PartitionPrefix, a JobRunTime és a SuccessOrFailure, ahol a PartitionPrefix az Előtag beállítás az S3-ban, amely név alapján szűri az Amazon S3 mappáit és fájljait, a JobRunTime a másolási feladatok futtatásakor a datetime érték, a SuccessOrFailure pedig az egyes partíciók másolásának állapota: 0 azt jelenti, hogy ez a partíció nem lett átmásolva az Azure-ba, és az 1 azt jelenti, hogy ezt a partíciót sikeresen átmásolta az Azure-ba. A vezérlőtáblában 5 partíció van definiálva. A JobRunTime alapértelmezett értéke lehet az az idő, amikor az egyszeri előzményadat-migrálás elindul. Az ADF másolási tevékenysége a legutóbb módosított AWS S3-on lévő fájlokat másolja. Az egyes partíciók másolásának alapértelmezett állapota 1.
CREATE TABLE [dbo].[s3_partition_delta_control_table]( [PartitionPrefix] [varchar](255) NULL, [JobRunTime] [datetime] NULL, [SuccessOrFailure] [bit] NULL ) INSERT INTO s3_partition_delta_control_table (PartitionPrefix, JobRunTime, SuccessOrFailure) VALUES ('a','1/1/2019 12:00:00 AM',1), ('b','1/1/2019 12:00:00 AM',1), ('c','1/1/2019 12:00:00 AM',1), ('d','1/1/2019 12:00:00 AM',1), ('e','1/1/2019 12:00:00 AM',1);
Hozzon létre egy tárolt eljárást ugyanazon az Azure SQL Database-en a vezérlőtáblához.
Megjegyzés:
A tárolt eljárás neve sp_insert_partition_JobRunTime_success. Ezt az SqlServerStoredProcedure-tevékenység fogja meghívni az ADF-folyamatban.
CREATE PROCEDURE [dbo].[sp_insert_partition_JobRunTime_success] @PartPrefix varchar(255), @JobRunTime datetime, @SuccessOrFailure bit AS BEGIN INSERT INTO s3_partition_delta_control_table (PartitionPrefix, JobRunTime, SuccessOrFailure) VALUES (@PartPrefix,@JobRunTime,@SuccessOrFailure) END GO
Lépjen a Változásadatok másolása AWS S3-ból az Azure Data Lake Storage Gen2-sablonba . Adja meg a külső vezérlőtáblához, az AWS S3-hoz adatforrástárként, céltárolóként pedig az Azure Data Lake Storage Gen2-hez tartozó kapcsolatokat. Vegye figyelembe, hogy a külső vezérlőtábla és a tárolt eljárás ugyanarra a kapcsolatra hivatkozik.
Kattintson a Sablon használata lehetőségre.
A következő példában látható, hogy 2 folyamat és 3 adatkészlet jött létre:
Lépjen a "DeltaCopyFromS3" folyamatra, és válassza a Hibakeresés lehetőséget, és adja meg a paramétereket. Ezután válassza a Befejezés lehetőséget.
Az alábbi példához hasonló eredmények jelennek meg:
A vezérlőtáblából származó eredményeket a "select * from s3_partition_delta_control_table" lekérdezéssel is ellenőrizheti, a kimenet az alábbi példához hasonlóan jelenik meg: