Bagikan melalui


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

Cuplikan layar opsi pemangkasan partisi tersedia untuk membatasi pemeriksaan.

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.