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.
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.
İlgili içerik
- Eşleme veri akışında bir kaynak dönüştürmesi oluşturun.
- Eşleme veri akışında havuz dönüşümü oluşturma.
- Satırları ekleme, güncelleştirme, yükseltme veya silme olarak işaretlemek için bir değişiklik satırı dönüştürmesi oluşturun.