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

  1. 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);
    
  2. 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
    
  3. 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.

    Screenshot that shows the Migrate historical data from AWS S3 to Azure Data Lake Storage Gen2 template.

  4. Kattintson a Sablon használata lehetőségre.

    Screenshot that highlights the Use this template button.

  5. A következő példában látható, hogy 2 folyamat és 3 adatkészlet jött létre:

    Screenshot that shows the two pipelines and three datasets that were created by using the template.

  6. 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.

    Screenshot that shows where to select Debug and enter the parameters before you select Finish.

  7. Az alábbi példához hasonló eredmények jelennek meg:

    Screenshot that shows the returned results.

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

  1. 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);
    
  2. 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
    
  3. 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.

    Create a new connection

  4. Kattintson a Sablon használata lehetőségre.

    Use this template

  5. A következő példában látható, hogy 2 folyamat és 3 adatkészlet jött létre:

    Review the pipeline

  6. 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.

    Click **Debug**

  7. Az alábbi példához hasonló eredmények jelennek meg:

    Review the result

  8. 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:

    Screenshot that shows the results from the control table after you run the query.