Format Delta di Azure Data Factory
BERLAKU UNTUK: Azure Data Factory
Azure Synapse Analytics
Tip
Cobalah Data Factory di Microsoft Fabric, solusi analitik all-in-one untuk perusahaan. Microsoft Fabric mencakup semuanya mulai dari pergerakan data hingga ilmu data, analitik real time, kecerdasan bisnis, dan pelaporan. Pelajari cara memulai uji coba baru secara gratis!
Artikel ini menyoroti cara menyalin data ke dan dari delta lake yang disimpan di Azure Data Lake Store Gen2 atau Azure Blob Storage menggunakan format delta. Konektor ini tersedia sebagai himpunan data sebaris dalam pemetaan aliran data sebagai sumber dan sink.
Properti pemetaan aliran data
Konektor ini tersedia sebagai himpunan data sebaris dalam pemetaan aliran data sebagai sumber dan sink.
Properti sumber
Tabel di bawah ini mencantumkan properti yang didukung oleh sumber delta. Anda bisa mengedit properti ini di tab opsi Sumber.
Nama | Deskripsi | Wajib diisi | Nilai yang diizinkan | Properti skrip aliran data |
---|---|---|---|---|
Format | Format harus berupa delta |
yes | delta |
format |
Sistem file | Kontainer/sistem file dari delta lake | yes | String | fileSystem |
Jalur folder | Direktori delta lake | yes | String | folderPath |
Jenis pemadatan | Jenis pemadatan tabel delta | no | bzip2 gzip deflate ZipDeflate snappy lz4 |
kompresiTipe |
Tingkat pemadatan | Pilih apakah pemadatan selesai secepat mungkin atau apakah file yang dihasilkan harus dikompresi secara optimal. | diperlukan jika compressedType ditentukan. |
Optimal atau Fastest |
kompresiLevel |
Perjalanan waktu | Memilih apakah akan mengkueri rekam jepret tabel delta yang lebih lama | no | Kueri menurut tanda waktu: Tanda waktu Kueri menurut versi: Bilangan Bulat |
timestampAsOf versionAsOf |
Izinkan file tidak ditemukan | Jika true, kesalahan tidak dilemparkan jika tidak ada file yang ditemukan | no | true atau false |
ignoreNoFilesFound |
Mengimpor skema
Delta hanya tersedia sebagai himpunan data sebaris dan, secara default, tidak memiliki skema terkait. Untuk mendapatkan metadata kolom, klik tombol Impor skema di tab Proyeksi . Ini memungkinkan Anda untuk mereferensikan nama kolom dan jenis data yang ditentukan oleh korpus. Untuk mengimpor skema, sesi debug aliran data harus aktif, dan Anda harus memiliki file definisi entitas CDM yang ada untuk ditujukan.
Contoh skrip sumber delta
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
Properti sink
Tabel di bawah ini mencantumkan properti yang didukung oleh sink delta. Anda dapat mengedit properti ini di tab Pengaturan.
Nama | Deskripsi | Wajib diisi | Nilai yang diizinkan | Properti skrip aliran data |
---|---|---|---|---|
Format | Format harus berupa delta |
yes | delta |
format |
Sistem file | Kontainer/sistem file dari delta lake | yes | String | fileSystem |
Jalur folder | Direktori delta lake | yes | String | folderPath |
Jenis pemadatan | Jenis pemadatan tabel delta | no | bzip2 gzip deflate ZipDeflate snappy lz4 TarGZip tar |
kompresiTipe |
Tingkat pemadatan | Pilih apakah pemadatan selesai secepat mungkin atau apakah file yang dihasilkan harus dikompresi secara optimal. | diperlukan jika compressedType ditentukan. |
Optimal atau Fastest |
kompresiLevel |
Vakum | Menghapus file yang lebih lama dari durasi yang ditentukan yang tidak lagi relevan dengan versi tabel saat ini. Ketika nilai 0 atau kurang ditentukan, operasi vakum tidak dilakukan. | yes | Bilangan bulat | vakum |
Tindakan pada tabel | Memberi tahu ADF apa yang harus dilakukan dengan tabel Delta target di sink Anda. Anda dapat membiarkannya apa adanya dan menambahkan baris baru, menimpa definisi tabel dan data yang ada dengan metadata dan data baru, atau mempertahankan struktur tabel yang ada tetapi memotong terlebih dahulu semua baris, lalu menyisipkan baris baru. | no | Tidak Ada, Potong, Timpa | deltaTruncate, timpa |
Perbarui() metode | Saat Anda memilih "Izinkan sisipan" saja atau saat Anda menulis ke tabel delta baru, target menerima semua baris masuk terlepas dari kebijakan Baris yang ditetapkan. Jika data Anda berisi baris kebijakan Baris lainnya, data tersebut perlu dikecualikan menggunakan transformasi Filter sebelumnya. Ketika semua metode Pembaruan dipilih, Gabungkan dilakukan, di mana baris disisipkan/dihapus/diperbarui sesuai Kebijakan Baris yang ditetapkan menggunakan transformasi Ubah Baris sebelumnya. |
yes | true atau false |
dapat disisipkan dapat dideletable dapat ditingkatkan updateable |
Tulis yang Dioptimalkan | Mencapai throughput yang lebih tinggi untuk operasi tulis dengan mengoptimalkan acak internal di eksekutor Spark. Akibatnya, Anda mungkin melihat lebih sedikit partisi dan file yang berukuran lebih besar | no | true atau false |
dioptimalkanWrite: true |
Ringkas Otomatis | Setelah operasi tulis selesai, Spark akan secara otomatis menjalankan OPTIMIZE perintah untuk mengatur ulang data, menghasilkan lebih banyak partisi jika perlu, untuk performa membaca yang lebih baik di masa depan |
no | true atau false |
lengkapiOtomatis: true |
Contoh skrip sink delta
Skrip aliran data terkait adalah:
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
Sink delta dengan pemangkasan partisi
Dengan opsi ini pada metode pembaruan di atas (yaitu update/upsert/delete), Anda dapat membatasi jumlah partisi yang diperiksa. Hanya partisi yang memenuhi kondisi ini yang diambil dari penyimpanan target. Anda dapat menentukan kumpulan nilai tetap yang mungkin diambil oleh kolom partisi.
Contoh skrip sink delta dengan pemangkasan partisi
Contoh skrip adalah seperti di bawah ini.
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 hanya akan membaca 2 partisi, di mana part_col == 5 dan 8 dari penyimpanan delta target alih-alih semua partisi. part_col adalah kolom tempat data target delta dipartisi. Kolom ini tidak perlu ada dalam data sumber.
Opsi pengoptimalan sink delta
Di tab Pengaturan, Anda menemukan tiga opsi lagi untuk mengoptimalkan transformasi sink delta.
Ketika opsi Gabungkan skema diaktifkan, opsi ini memungkinkan evolusi skema, yaitu kolom apa pun yang ada di aliran masuk saat ini tetapi tidak dalam tabel Delta target secara otomatis ditambahkan ke skemanya. Opsi ini didukung di semua metode pembaruan.
Saat Pemadatan otomatis diaktifkan, setelah penulisan individu, transformasi akan memeriksa apakah file dapat dipadatkan lebih lanjut, dan menjalankan pekerjaan OPTIMALISASI cepat (dengan ukuran file 128 MB, bukan 1GB) untuk memadatkan file lebih lanjut untuk partisi yang memiliki jumlah file kecil terbanyak. Pemadatan otomatis membantu untuk menyatukan sejumlah besar file kecil ke dalam sejumlah kecil file besar. Pemadatan otomatis hanya dimulai ketika setidaknya terdapat 50 file. Setelah operasi pemadatan dilakukan, ia akan membuat tabel versi baru, dan menulis file baru yang berisi data beberapa file sebelumnya dalam bentuk terkompresi ringkas.
Saat Optimalkan penulisan diaktifkan, transformasi sink akan mengoptimalkan ukuran partisi secara dinamis berdasarkan data aktual dengan cara menuliskan file berukuran 128 MB untuk setiap partisi tabel. Ini adalah ukuran perkiraan dan dapat bervariasi tergantung pada karakteristik kumpulan data. Penulisan yang dioptimalkan meningkatkan keseluruhan efisiensi penulisan dan pembacaan setelahnya. Ini mengatur partisi-sehingga performa bacaan berikutnya meningkat.
Tip
Proses penulisan yang dioptimalkan akan memperlambat pekerjaan ETL Anda secara keseluruhan karena Sink akan mengeluarkan perintah Spark Delta Lake Optimize setelah data Anda diproses. Sebaiknya gunakan Penulisan yang Dioptimalkan dengan hemat. Misalnya, jika Anda memiliki alur data per jam, jalankan aliran data dengan Penulisan yang Dioptimalkan setiap hari.
Pembatasan yang diketahui
Saat Anda menulis ke sink delta, ada batasan yang diketahui di mana jumlah baris yang ditulis tidak akan muncul dalam output pemantauan.
Konten terkait
- Buat transformasi sumber di pemetaan aliran data.
- Buat transformasi sink di pemetaan aliran data.
- Buat transformasi baris perubahan untuk menandai baris sebagai sisipkan, perbarui, upsert, atau hapus.