Azure Data Factory'de Delta biçimi

UYGULANANLAR: Azure Data Factory Azure Synapse Analytics

İpucu

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!

Bu makalede, delta biçimini kullanarak Azure Data Lake Store 2. Nesil'de veya Azure Blob Depolama depolanan bir delta gölüne veri kopyalama adımları vurgulanmaktadır. Bu bağlayıcı, veri akışlarını hem kaynak hem de havuz olarak eşlemede satır içi veri kümesi olarak kullanılabilir.

Eşleme veri akışı özellikleri

Bu bağlayıcı, veri akışlarını hem kaynak hem de havuz olarak eşlemede satır içi veri kümesi olarak kullanılabilir.

Kaynak özellikleri

Aşağıdaki tabloda, delta kaynağı tarafından desteklenen özellikler listelenmektedir. Bu özellikleri Kaynak seçenekleri sekmesinde düzenleyebilirsiniz.

Veri Akışı Adı Açıklama Gerekli İzin verilen değerler Veri akışı betiği özelliği
Biçimlendir Biçim şu şekilde olmalıdır: delta evet delta format
Dosya sistemi Delta gölün kapsayıcı/dosya sistemi evet String fileSystem
Folder path Delta gölü dizini evet String folderPath
Sıkıştırma türü Delta tablosunun sıkıştırma türü hayır bzip2
gzip
deflate
ZipDeflate
snappy
lz4
compressionType
Compression level Sıkıştırmanın mümkün olan en hızlı şekilde tamamlanıp tamamlanmayacağını veya sonuçta elde edilen dosyanın en iyi şekilde sıkıştırılıp sıkıştırılmayacağını seçin. belirtilirse compressedType gereklidir. Optimal veya Fastest compressionLevel
Zaman yolculuğu Delta tablosunun eski anlık görüntüsünün sorgulanıp sorgulanmayacağını seçme hayır Zaman damgasına göre sorgulama: Zaman damgası
Sürüme göre sorgu: Tamsayı
timestampAsOf
versionAsOf
Dosya bulunamadığında izin ver True ise, hiçbir dosya bulunamazsa hata oluşmaz hayır true veya false ignoreNoFilesFound

Şemayı içeri aktarma

Delta yalnızca satır içi veri kümesi olarak kullanılabilir ve varsayılan olarak ilişkili bir şeması yoktur. Sütun meta verilerini almak için Projeksiyon sekmesinde şemayı içeri aktar düğmesine tıklayın. Bu, corpus tarafından belirtilen sütun adlarına ve veri türlerine başvurmanızı sağlar. Şemayı içeri aktarmak için veri akışı hata ayıklama oturumunun etkin olması ve işaret etmeniz gereken mevcut bir CDM varlık tanımı dosyanız olması gerekir.

Delta kaynak betiği örneği

source(output(movieId as integer,
            title as string,
            releaseDate as date,
            rated as boolean,
            screenedOn as timestamp,
            ticketPrice as decimal(10,2)
            ),
    store: 'local',
    format: 'delta',
    versionAsOf: 0,
    allowSchemaDrift: false,
    folderPath: $tempPath + '/delta'
  ) ~> movies

Havuz özellikleri

Aşağıdaki tabloda delta havuzu tarafından desteklenen özellikler listelenmektedir. Bu özellikleri Ayarlar sekmesinde düzenleyebilirsiniz.

Veri Akışı Adı Açıklama Gerekli İzin verilen değerler Veri akışı betiği özelliği
Biçimlendir Biçim şu şekilde olmalıdır: delta evet delta format
Dosya sistemi Delta gölün kapsayıcı/dosya sistemi evet String fileSystem
Folder path Delta gölü dizini evet String folderPath
Sıkıştırma türü Delta tablosunun sıkıştırma türü hayır bzip2
gzip
deflate
ZipDeflate
snappy
lz4
TarGZip
tar
compressionType
Compression level Sıkıştırmanın mümkün olan en hızlı şekilde tamamlanıp tamamlanmayacağını veya sonuçta elde edilen dosyanın en iyi şekilde sıkıştırılıp sıkıştırılmayacağını seçin. belirtilirse compressedType gereklidir. Optimal veya Fastest compressionLevel
Vakum Belirtilen sürenin üzerinde olan ve artık geçerli tablo sürümüyle ilgili olmayan dosyaları siler. 0 veya daha az bir değer belirtildiğinde vakum işlemi gerçekleştirilmez. evet Tamsayı vakum
Tablo eylemi ADF'ye havuzunuzdaki hedef Delta tablosuyla ne yapacağını bildirir. Olduğu gibi bırakabilir ve yeni satırlar ekleyebilir, yeni meta veriler ve verilerle var olan tablo tanımının ve verilerin üzerine yazabilir veya mevcut tablo yapısını koruyabilir, ancak önce tüm satırları kesebilir, sonra yeni satırları ekleyebilirsiniz. hayır Yok, Kes, Üzerine Yaz deltaTruncate, üzerine yaz
Güncelleştirme yöntemi Tek başına "Eklemeye izin ver" seçeneğini belirlediğinizde veya yeni bir delta tablosuna yazdığınızda hedef, Satır ilkeleri kümesinden bağımsız olarak tüm gelen satırları alır. Verileriniz diğer Satır ilkelerinin satırlarını içeriyorsa, bunların önceki bir Filtre dönüşümü kullanılarak dışlanması gerekir.

Tüm Update yöntemleri seçildiğinde bir Birleştirme gerçekleştirilir; burada satırlar, önceki bir Alter Row dönüşümü kullanılarak ayarlanan Satır İlkeleri'ne göre eklenir/silinir/eklenir/güncelleştirilir.
evet true veya false eklenebilir
deletable
upsertable
güncelleştirilebilir
İyileştirilmiş Yazma Spark yürütücülerinde iç karıştırmayı iyileştirerek yazma işlemi için daha yüksek aktarım hızı elde edin. Sonuç olarak, daha büyük boyutlu daha az bölüm ve dosya fark edebilirsiniz hayır true veya false optimizedWrite: true
Otomatik Sıkıştırma Herhangi bir yazma işlemi tamamlandıktan sonra Spark, verileri yeniden düzenlemek için komutu otomatik olarak yürütür OPTIMIZE ve gelecekte daha iyi okuma performansı için gerekirse daha fazla bölüme neden olur hayır true veya false autoCompact: true

Delta havuzu betiği örneği

İlişkili veri akışı betiği:

moviesAltered sink(
          input(movieId as integer,
                title as string
            ),
           mapColumn(
                movieId,
                title
            ),
           insertable: true,
           updateable: true,
           deletable: true,
           upsertable: false,
           keys: ['movieId'],
            store: 'local',
           format: 'delta',
           vacuum: 180,
           folderPath: $tempPath + '/delta'
           ) ~> movieDB

Bölüm ayıklama ile delta havuzu

Yukarıdaki Güncelleştirme yöntemi (güncelleştirme/upsert/delete gibi) altındaki bu seçenekle, incelenen bölüm sayısını sınırlayabilirsiniz. Hedef depodan yalnızca bu koşulu karşılayan bölümler getirilir. Bir bölüm sütununun alabileceği sabit değer kümesini belirtebilirsiniz.

İncelemeyi sınırlamak için bölüm ayıklama seçeneklerinin ekran görüntüsü.

Bölüm ayıklama ile delta havuzu betiği örneği

Aşağıda gösterildiği gibi örnek bir betik verilmiştir.

DerivedColumn1 sink( 
      input(movieId as integer,
            title as string
           ), 
      allowSchemaDrift: true,
      validateSchema: false,
      format: 'delta',
      container: 'deltaContainer',
      folderPath: 'deltaPath',
      mergeSchema: false,
      autoCompact: false,
      optimizedWrite: false,
      vacuum: 0,
      deletable:false,
      insertable:true,
      updateable:true,
      upsertable:false,
      keys:['movieId'],
      pruneCondition:['part_col' -> ([5, 8])],
      skipDuplicateMapInputs: true,
      skipDuplicateMapOutputs: true) ~> sink2
 

Delta, tüm bölümler yerine hedef delta deposundan yalnızca == 5 ve 8 part_col 2 bölümü okur. part_col, hedef delta verilerinin bölümlendiği bir sütundur. Kaynak verilerde mevcut olması gerekmez.

Delta havuzu iyileştirme seçenekleri

Ayarlar sekmesinde, delta havuzu dönüştürmeyi iyileştirmek için üç seçenek daha bulursunuz.

  • Şemayı birleştir seçeneği etkinleştirildiğinde şema evrimine izin verir; örneğin, geçerli gelen akışta bulunan ancak hedef Delta tablosunda bulunmayan tüm sütunlar otomatik olarak şemasına eklenir. Bu seçenek tüm güncelleştirme yöntemlerinde desteklenir.

  • Otomatik sıkıştırma etkinleştirildiğinde, tek bir yazma işleminden sonra dönüştürme, dosyaların daha fazla sıkıştırılıp sıkıştırılamadığını denetler ve en fazla küçük dosyaya sahip bölümler için dosyaları daha fazla sıkıştırmak için hızlı bir OPTIMIZE işi (1 GB yerine 128 MB dosya boyutuyla) çalıştırır. Otomatik sıkıştırma, çok sayıda küçük dosyayı daha az sayıda büyük dosyada birleştirmeye yardımcı olur. Otomatik sıkıştırma yalnızca en az 50 dosya olduğunda devreye giriyor. Sıkıştırma işlemi gerçekleştirildikten sonra tablonun yeni bir sürümünü oluşturur ve sıkıştırılmış biçimde önceki birkaç dosyanın verilerini içeren yeni bir dosya yazar.

  • Yazmayı en iyi duruma getir etkinleştirildiğinde havuz dönüştürmesi, her tablo bölümü için 128 MB dosya yazmaya çalışarak gerçek verilere göre bölüm boyutlarını dinamik olarak iyileştirir. Bu yaklaşık bir boyutdur ve veri kümesi özelliklerine bağlı olarak değişebilir. İyileştirilmiş yazma işlemleri, yazma ve sonraki okumaların genel verimliliğini artırır. Bölümleri, sonraki okumaların performansını artıracak şekilde düzenler.

İpucu

Havuz, verileriniz işlendikten sonra Spark Delta Lake İyileştirme komutunu yayımlayacağından, iyileştirilmiş yazma işlemi genel ETL işinizi yavaşlatır. İyileştirilmiş Yazma'nın tedbirli bir şekilde kullanılması önerilir. Örneğin, saatlik bir veri işlem hattınız varsa, Günlük İyileştirilmiş Yazma ile bir veri akışı yürütebilirsiniz.

Bilinen sınırlamalar

Bir delta havuzuna yazdığınızda, yazılan satır sayılarının izleme çıkışında gösterilmeyeceği bilinen bir sınırlama vardır.