Amazon S3'ten Azure Data Lake Storage 2. Nesil'a veri geçirme

UYGULANANLAR: Azure Data Factory Azure Synapse Analytics

Bahşiş

Kuruluşlar için hepsi bir arada analiz çözümü olan Microsoft Fabric'te Data Factory'yi deneyin. Microsoft Fabric , veri taşımadan veri bilimine, gerçek zamanlı analize, iş zekasına ve raporlamaya kadar her şeyi kapsar. Yeni bir deneme sürümünü ücretsiz olarak başlatmayı öğrenin!

Amazon S3'ten Azure Data Lake Storage 2. Nesil yüzlerce milyonlarca dosyadan oluşan petabaytlarca veriyi geçirmek için şablonları kullanın.

Dekont

KÜÇÜK veri hacmini AWS S3'ten Azure'a kopyalamak istiyorsanız (örneğin, 10 TB'tan az), Azure Data Factory Veri Kopyalama aracını kullanmak daha verimli ve kolaydır. Bu makalede açıklanan şablon, ihtiyacınız olandan daha fazlasıdır.

Çözüm şablonları hakkında

Veri bölümü özellikle 10 TB'tan fazla veri geçirilirken önerilir. Verileri bölümlendirmek için Amazon S3'teki klasörleri ve dosyaları ada göre filtrelemek için 'ön ek' ayarından yararlanın ve ardından her ADF kopyalama işi bir kerede bir bölüm kopyalayabilir. Daha iyi aktarım hızı için birden çok ADF kopyalama işini eşzamanlı olarak çalıştırabilirsiniz.

Veri geçişi normalde bir kerelik geçmiş veri geçişinin yanı sıra AWS S3'ten Azure'a yapılan değişikliklerin düzenli aralıklarla eşitlenmesini gerektirir. Aşağıda, bir şablonun bir kerelik geçmiş veri geçişini, diğer şablonun ise DEĞIŞIKLIKLERI AWS S3'ten Azure'a eşitlemeyi kapsadığı iki şablon vardır.

Şablonun geçmiş verilerini Amazon S3'ten Azure Data Lake Storage 2. Nesil geçirmesi için

Bu şablon (şablon adı: GEÇMIŞ verileri AWS S3'ten Azure Data Lake Storage 2. Nesil'a geçirme) Azure SQL Veritabanı'deki bir dış denetim tablosunda bölüm listesi yazdığınızı varsayar. Bu nedenle, dış denetim tablosundan bölüm listesini almak, her bölüm üzerinde yineleme yapmak ve her ADF kopyalama işinin bir kerede bir bölüm kopyalamasını sağlamak için bir Arama etkinliği kullanır. Herhangi bir kopyalama işi tamamlandıktan sonra, denetim tablosundaki her bölümü kopyalama durumunu güncelleştirmek için Saklı Yordam etkinliğini kullanır.

Şablon beş etkinlik içerir:

  • Arama, dış denetim tablosundan Azure Data Lake Storage 2. Nesil kopyalanmamış bölümleri alır. Tablo adı s3_partition_control_table ve tablodan veri yüklenecek sorgu "SELECT PartitionPrefix FROM s3_partition_control_table WHERE SuccessOrFailure = 0" şeklindedir.
  • ForEach, Arama etkinliğinden bölüm listesini alır ve her bölümü TriggerCopy etkinliğine yineler. BatchCount'u birden çok ADF kopyalama işini eşzamanlı olarak çalıştıracak şekilde ayarlayabilirsiniz. Bu şablonda 2 ayarladık.
  • ExecutePipeline, CopyFolderPartitionFromS3 işlem hattını yürütür. Her kopyalama işinin bölüm kopyalamasını sağlamak için başka bir işlem hattı oluşturmanın nedeni, aws S3'ten belirli bir bölümü yeniden yüklemek için başarısız kopyalama işini yeniden çalıştırmanızı kolaylaştıracak olmasıdır. Diğer bölümleri yükleyecek diğer tüm kopyalama işleri etkilenmez.
  • Her bölümü AWS S3'ten Azure Data Lake Storage 2. Nesil kopyalar.
  • SqlServerStoredProcedure , denetim tablosundaki her bölümü kopyalama durumunu güncelleştirir.

Şablon iki parametre içerir:

  • AWS_S3_bucketName, AWS S3'te verileri geçirmek istediğiniz demet adınızdır. AWS S3'te birden çok demetten veri geçirmek istiyorsanız, her bölümün demet adını depolamak için dış denetim tablonuza bir sütun daha ekleyebilir ve ayrıca işlem hattınızı bu sütundan uygun şekilde veri alacak şekilde güncelleştirebilirsiniz.
  • Azure_Depolama_fileSystem, verileri geçirmek istediğiniz Azure Data Lake Storage 2. Nesil dosya sistem adınızdır.

Şablonun değiştirilen dosyaları yalnızca Amazon S3'ten Azure Data Lake Storage 2. Nesil'a kopyalaması için

Bu şablon (şablon adı: delta verilerini AWS S3'ten Azure Data Lake Storage 2. Nesil'a kopyalama) yeni veya güncelleştirilmiş dosyaları yalnızca AWS S3'ten Azure'a kopyalamak için her dosyanın LastModifiedTime değerini kullanır. Dosyalarınızın veya klasörlerinizin AWS S3'teki dosya veya klasör adının (örneğin, /yyyy/mm/dd/file.csv) bir parçası olarak zaman dilimi bilgileriyle zaman dilimi bilgileriyle önceden bölümlenip bölümlenmediğini unutmayın; yeni dosyaları artımlı yükleme için daha yüksek performanslı bir yaklaşım elde etmek için bu öğreticiye gidebilirsiniz. Bu şablon, Azure SQL Veritabanı bir dış denetim tablosunda bölüm listesi yazdığınızı varsayar. Bu nedenle, dış denetim tablosundan bölüm listesini almak, her bölüm üzerinde yineleme yapmak ve her ADF kopyalama işinin bir kerede bir bölüm kopyalamasını sağlamak için bir Arama etkinliği kullanır. Her kopyalama işi AWS S3'ten dosyaları kopyalamaya başladığında, yalnızca yeni veya güncelleştirilmiş dosyaları tanımlamak ve kopyalamak için LastModifiedTime özelliğine dayanır. Herhangi bir kopyalama işi tamamlandıktan sonra, denetim tablosundaki her bölümü kopyalama durumunu güncelleştirmek için Saklı Yordam etkinliğini kullanır.

Şablon yedi etkinlik içerir:

  • Arama , bölümleri bir dış denetim tablosundan alır. Tablo adı s3_partition_delta_control_table ve tablodan veri yüklenecek sorgu "s3_partition_delta_control_table ayrı PartitionPrefix seçin" şeklindedir.
  • ForEach, Arama etkinliğinden bölüm listesini alır ve her bölümü TriggerDeltaCopy etkinliğine yineler. BatchCount'u birden çok ADF kopyalama işini eşzamanlı olarak çalıştıracak şekilde ayarlayabilirsiniz. Bu şablonda 2 ayarladık.
  • ExecutePipeline, DeltaCopyFolderPartitionFromS3 işlem hattını yürütür. Her kopyalama işinin bölüm kopyalamasını sağlamak için başka bir işlem hattı oluşturmanın nedeni, aws S3'ten belirli bir bölümü yeniden yüklemek için başarısız kopyalama işini yeniden çalıştırmanızı kolaylaştıracak olmasıdır. Diğer bölümleri yükleyecek diğer tüm kopyalama işleri etkilenmez.
  • Arama , yeni veya güncelleştirilmiş dosyaların LastModifiedTime aracılığıyla tanımlanabilmesi için dış denetim tablosundan son kopyalama işi çalışma zamanını alır. Tablo adı s3_partition_delta_control_table ve tablodan veri yüklenecek sorgu "select max(JobRunTime) as LastModifiedTime from s3_partition_delta_control_table where PartitionPrefix = '@{pipeline().parameters.prefixStr}' ve SuccessOrFailure = 1" şeklindedir.
  • Yalnızca her bölüm için yeni veya değiştirilmiş dosyaları AWS S3'ten Azure Data Lake Storage 2. Nesil kopyalar. modifiedDatetimeStart özelliği, son kopyalama işi çalışma zamanına ayarlanır. modifiedDatetimeEnd özelliği geçerli kopyalama işi çalışma zamanına ayarlanır. Saatin UTC saat dilimine uygulandığını unutmayın.
  • SqlServerStoredProcedure , başarılı olduğunda denetim tablosundaki her bölümü kopyalama ve kopyalama çalışma süresini güncelleştirme. SuccessOrFailure sütunu 1 olarak ayarlanır.
  • SqlServerStoredProcedure , her bölümü kopyalama durumunu güncelleştirir ve başarısız olduğunda denetim tablosundaki çalışma süresini kopyalar. SuccessOrFailure sütunu 0 olarak ayarlanır.

Şablon iki parametre içerir:

  • AWS_S3_bucketName, AWS S3'te verileri geçirmek istediğiniz demet adınızdır. AWS S3'te birden çok demetten veri geçirmek istiyorsanız, her bölümün demet adını depolamak için dış denetim tablonuza bir sütun daha ekleyebilir ve ayrıca işlem hattınızı bu sütundan uygun şekilde veri alacak şekilde güncelleştirebilirsiniz.
  • Azure_Depolama_fileSystem, verileri geçirmek istediğiniz Azure Data Lake Storage 2. Nesil dosya sistem adınızdır.

Bu iki çözüm şablonunu kullanma

Şablonun geçmiş verilerini Amazon S3'ten Azure Data Lake Storage 2. Nesil geçirmesi için

  1. AWS S3'ün bölüm listesini depolamak için Azure SQL Veritabanı'de bir denetim tablosu oluşturun.

    Dekont

    Tablo adı s3_partition_control_table. Denetim tablosunun şeması PartitionPrefix ve SuccessOrFailure'dir. Burada PartitionPrefix, Amazon S3'teki klasörleri ve dosyaları ada göre filtrelemek için S3'teki ön ek ayarıdır ve SuccessOrFailure her bölümü kopyalama durumudur: 0, bu bölümün Azure'a kopyalanmadığı ve 1 ise bu bölümün başarıyla Azure'a kopyalandığı anlamına gelir. Denetim tablosunda tanımlanan 5 bölüm vardır ve her bölümü kopyalamanın varsayılan durumu 0'dır.

    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. Denetim tablosu için aynı Azure SQL Veritabanı saklı yordam oluşturun.

    Dekont

    Saklı Yordamın adı sp_update_partition_success. ADF işlem hattınızdaki SqlServerStoredProcedure etkinliği tarafından çağrılır.

    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. Geçmiş verileri AWS S3'ten Azure Data Lake Storage 2. Nesil'a geçirme şablonuna gidin. Dış denetim tablonuza bağlantıları, veri kaynağı deposu olarak AWS S3'e ve hedef depo olarak Azure Data Lake Storage 2. Nesil. Dış denetim tablosunun ve saklı yordamın aynı bağlantıya başvurduğunu unutmayın.

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

  4. Bu şablonu kullan'ı seçin.

    Screenshot that highlights the Use this template button.

  5. Aşağıdaki örnekte gösterildiği gibi 2 işlem hattının ve 3 veri kümesinin oluşturulduğunu görürsünüz:

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

  6. "BulkCopyFromS3" işlem hattına gidin ve Hata Ayıkla'yı seçip Parametreler'i girin. Ardından Son'u seçin.

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

  7. Aşağıdaki örneğe benzer sonuçlar görürsünüz:

    Screenshot that shows the returned results.

Şablonun değiştirilen dosyaları yalnızca Amazon S3'ten Azure Data Lake Storage 2. Nesil'a kopyalaması için

  1. AWS S3'ün bölüm listesini depolamak için Azure SQL Veritabanı'de bir denetim tablosu oluşturun.

    Dekont

    Tablo adı s3_partition_delta_control_table. Denetim tablosunun şeması PartitionPrefix, JobRunTime ve SuccessOrFailure'dir; burada PartitionPrefix, Amazon S3'teki klasörleri ve dosyaları ada göre filtrelemek için S3'teki ön ek ayarıdır, jobRunTime kopyalama işleri çalıştırıldığında tarih saat değeridir ve SuccessOrFailure her bölümü kopyalama durumudur: 0, bu bölümün Azure'a kopyalanmadığı ve 1 bu bölümün Azure'a başarıyla kopyalandığı anlamına gelir. Denetim tablosunda tanımlanmış 5 bölüm vardır. JobRunTime için varsayılan değer, bir kerelik geçmiş veri geçişinin başlatılacağı zaman olabilir. ADF kopyalama etkinliği, AWS S3'te bu süreden sonra en son değiştirilen dosyaları kopyalar. Her bölümü kopyalamanın varsayılan durumu 1'dir.

    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. Denetim tablosu için aynı Azure SQL Veritabanı saklı yordam oluşturun.

    Dekont

    Saklı Yordamın adı sp_insert_partition_JobRunTime_success. ADF işlem hattınızdaki SqlServerStoredProcedure etkinliği tarafından çağrılır.

    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. Delta verilerini AWS S3'ten Azure Data Lake Storage 2. Nesil şablonuna kopyalama bölümüne gidin. Dış denetim tablonuza bağlantıları, veri kaynağı deposu olarak AWS S3'e ve hedef depo olarak Azure Data Lake Storage 2. Nesil. Dış denetim tablosunun ve saklı yordamın aynı bağlantıya başvurduğunu unutmayın.

    Create a new connection

  4. Bu şablonu kullan'ı seçin.

    Use this template

  5. Aşağıdaki örnekte gösterildiği gibi 2 işlem hattının ve 3 veri kümesinin oluşturulduğunu görürsünüz:

    Review the pipeline

  6. "DeltaCopyFromS3" işlem hattına gidin, Hata Ayıkla'yı seçin ve Parametreler'i girin. Ardından Son'u seçin.

    Click **Debug**

  7. Aşağıdaki örneğe benzer sonuçlar görürsünüz:

    Review the result

  8. Denetim tablosundaki sonuçları "select * from s3_partition_delta_control_table" sorgusuyla da denetleyebilirsiniz. Çıktıyı aşağıdaki örneğe benzer şekilde görürsünüz:

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