Membangun alur data end-to-end di Databricks

Artikel ini memperlihatkan kepada Anda cara membuat dan menyebarkan alur pemrosesan data end-to-end, termasuk cara menyerap data mentah, mengubah data, dan menjalankan analisis pada data yang diproses.

Catatan

Meskipun artikel ini menunjukkan cara membuat alur data lengkap menggunakan notebook Databricks dan pekerjaan Azure Databricks untuk mengatur alur kerja, Databricks merekomendasikan penggunaan Delta Live Tables, antarmuka deklaratif untuk membangun alur pemrosesan data yang andal, dapat dipertahankan, dan dapat diuji.

Apa itu alur data?

Alur data menerapkan langkah-langkah yang diperlukan untuk memindahkan data dari sistem sumber, mengubah data tersebut berdasarkan persyaratan, dan menyimpan data dalam sistem target. Alur data mencakup semua proses yang diperlukan untuk mengubah data mentah menjadi data yang disiapkan yang dapat dikonsumsi pengguna. Misalnya, alur data mungkin menyiapkan data sehingga analis data dan ilmuwan data dapat mengekstrak nilai dari data melalui analisis dan pelaporan.

Alur kerja ekstraksi, transformasi, dan pemuatan (ETL) adalah contoh umum dari alur data. Dalam pemrosesan ETL, data diserap dari sistem sumber dan ditulis ke area penahapan, diubah berdasarkan persyaratan (memastikan kualitas data, mendeduplikasi rekaman, dan sebagainya), dan kemudian ditulis ke sistem target seperti gudang data atau data lake.

Langkah-langkah alur data

Untuk membantu Anda mulai membuat alur data di Azure Databricks, contoh yang disertakan dalam artikel ini memandu membuat alur kerja pemrosesan data:

  • Gunakan fitur Azure Databricks untuk menjelajahi himpunan data mentah.
  • Buat buku catatan Databricks untuk menyerap data sumber mentah dan menulis data mentah ke tabel target.
  • Buat buku catatan Databricks untuk mengubah data sumber mentah dan menulis data yang diubah ke tabel target.
  • Buat buku catatan Databricks untuk mengkueri data yang diubah.
  • Mengotomatiskan alur data dengan pekerjaan Azure Databricks.

Persyaratan

Contoh: Himpunan data Million Song

Himpunan data yang digunakan dalam contoh ini adalah subset dari Himpunan Data Jutaan Lagu, kumpulan fitur dan metadata untuk trek musik kontemporer. Himpunan data ini tersedia dalam himpunan data sampel yang disertakan di ruang kerja Azure Databricks Anda.

Langkah 1: Membuat kluster

Untuk melakukan pemrosesan dan analisis data dalam contoh ini, buat kluster untuk menyediakan sumber daya komputasi yang diperlukan untuk menjalankan perintah.

Catatan

Karena contoh ini menggunakan himpunan data sampel yang disimpan di DBFS dan merekomendasikan tabel yang bertahan ke Katalog Unity, Anda membuat kluster yang dikonfigurasi dengan mode akses pengguna tunggal. Mode akses pengguna tunggal menyediakan akses penuh ke DBFS sekaligus memungkinkan akses ke Unity Catalog. Lihat Praktik terbaik untuk DBFS dan Katalog Unity.

  1. Klik Hitung di bilah sisi.
  2. Pada halaman Komputasi, klik Buat Kluster.
  3. Pada halaman Kluster Baru, masukkan nama unik untuk kluster.
  4. Dalam mode Akses, pilih Pengguna Tunggal.
  5. Di Akses pengguna tunggal atau perwakilan layanan, pilih nama pengguna Anda.
  6. Biarkan nilai yang tersisa dalam status defaultnya, dan klik Buat Kluster.

Untuk mempelajari selengkapnya tentang kluster Databricks, lihat Komputasi.

Langkah 2: Jelajahi data sumber

Untuk mempelajari cara menggunakan antarmuka Azure Databricks untuk menjelajahi data sumber mentah, lihat Menjelajahi data sumber untuk alur data. Jika Anda ingin langsung menyerap dan menyiapkan data, lanjutkan ke Langkah 3: Serap data mentah.

Langkah 3: Menyerap data mentah

Dalam langkah ini, Anda memuat data mentah ke dalam tabel untuk membuatnya tersedia untuk diproses lebih lanjut. Untuk mengelola aset data pada platform Databricks seperti tabel, Databricks merekomendasikan Unity Catalog. Namun, jika Anda tidak memiliki izin untuk membuat katalog dan skema yang diperlukan untuk menerbitkan tabel ke Katalog Unity, Anda masih bisa menyelesaikan langkah-langkah berikut dengan menerbitkan tabel ke metastore Apache Hive.

Untuk menyerap data, Databricks merekomendasikan penggunaan Auto Loader. Auto Loader secara otomatis mendeteksi dan memproses file baru saat tiba di penyimpanan objek cloud.

Anda dapat mengonfigurasi Auto Loader untuk secara otomatis mendeteksi skema data yang dimuat, memungkinkan Anda menginisialisasi tabel tanpa secara eksplisit mendeklarasikan skema data dan mengembangkan skema tabel saat kolom baru diperkenalkan. Ini menghilangkan kebutuhan untuk melacak dan menerapkan perubahan skema secara manual dari waktu ke waktu. Databricks merekomendasikan inferensi skema saat menggunakan Auto Loader. Namun, seperti yang terlihat dalam langkah eksplorasi data, data lagu tidak berisi informasi header. Karena header tidak disimpan dengan data, Anda harus secara eksplisit menentukan skema, seperti yang ditunjukkan pada contoh berikutnya.

  1. Di bar samping, klik Ikon BaruBaru dan pilih Buku Catatan dari menu. Dialog Buat Notebook muncul.

  2. Masukkan nama untuk buku catatan, misalnya, Ingest songs data. Secara default:

    • Python adalah bahasa yang dipilih.
    • Buku catatan dilampirkan ke kluster terakhir yang Anda gunakan. Dalam hal ini, kluster yang Anda buat di Langkah 1: Buat kluster.
  3. Masukkan yang berikut ini ke dalam sel pertama buku catatan:

    from pyspark.sql.types import DoubleType, IntegerType, StringType, StructType, StructField
    
    # Define variables used in the code below
    file_path = "/databricks-datasets/songs/data-001/"
    table_name = "<table-name>"
    checkpoint_path = "/tmp/pipeline_get_started/_checkpoint/song_data"
    
    schema = StructType(
      [
        StructField("artist_id", StringType(), True),
        StructField("artist_lat", DoubleType(), True),
        StructField("artist_long", DoubleType(), True),
        StructField("artist_location", StringType(), True),
        StructField("artist_name", StringType(), True),
        StructField("duration", DoubleType(), True),
        StructField("end_of_fade_in", DoubleType(), True),
        StructField("key", IntegerType(), True),
        StructField("key_confidence", DoubleType(), True),
        StructField("loudness", DoubleType(), True),
        StructField("release", StringType(), True),
        StructField("song_hotnes", DoubleType(), True),
        StructField("song_id", StringType(), True),
        StructField("start_of_fade_out", DoubleType(), True),
        StructField("tempo", DoubleType(), True),
        StructField("time_signature", DoubleType(), True),
        StructField("time_signature_confidence", DoubleType(), True),
        StructField("title", StringType(), True),
        StructField("year", IntegerType(), True),
        StructField("partial_sequence", IntegerType(), True)
      ]
    )
    
    (spark.readStream
      .format("cloudFiles")
      .schema(schema)
      .option("cloudFiles.format", "csv")
      .option("sep","\t")
      .load(file_path)
      .writeStream
      .option("checkpointLocation", checkpoint_path)
      .trigger(availableNow=True)
      .toTable(table_name)
    )
    

    Jika Anda menggunakan Katalog Unity, ganti <table-name> dengan katalog, skema, dan nama tabel untuk berisi rekaman yang diserap (misalnya, data_pipelines.songs_data.raw_song_data). Jika tidak, ganti <table-name> dengan nama tabel untuk berisi rekaman yang diserap, misalnya, raw_song_data.

    Ganti <checkpoint-path> dengan jalur ke direktori di DBFS untuk mempertahankan file titik pemeriksaan, misalnya, /tmp/pipeline_get_started/_checkpoint/song_data.

  4. Klik Menu Jalankan, dan pilih Jalankan Sel. Contoh ini mendefinisikan skema data menggunakan informasi dari README, menyerap data lagu dari semua file yang terkandung dalam file_path, dan menulis data ke tabel yang ditentukan oleh table_name.

Langkah 4: Siapkan data mentah

Untuk menyiapkan data mentah untuk analisis, langkah-langkah berikut mengubah data lagu mentah dengan memfilter kolom yang tidak perlu dan menambahkan bidang baru yang berisi tanda waktu untuk pembuatan rekaman baru.

  1. Di bar samping, klik Ikon BaruBaru dan pilih Buku Catatan dari menu. Dialog Buat Notebook muncul.

  2. Masukkan nama untuk buku catatan. Contohnya,Prepare songs data. Ubah bahasa default ke SQL.

  3. Masukkan yang berikut ini di sel pertama buku catatan:

    CREATE OR REPLACE TABLE
      <table-name> (
        artist_id STRING,
        artist_name STRING,
        duration DOUBLE,
        release STRING,
        tempo DOUBLE,
        time_signature DOUBLE,
        title STRING,
        year DOUBLE,
        processed_time TIMESTAMP
      );
    
    INSERT INTO
      <table-name>
    SELECT
      artist_id,
      artist_name,
      duration,
      release,
      tempo,
      time_signature,
      title,
      year,
      current_timestamp()
    FROM
      <raw-songs-table-name>
    

    Jika Anda menggunakan Unity Catalog, ganti <table-name> dengan katalog, skema, dan nama tabel untuk berisi rekaman yang difilter dan diubah (misalnya, data_pipelines.songs_data.prepared_song_data). Jika tidak, ganti <table-name> dengan nama tabel untuk berisi rekaman yang difilter dan diubah (misalnya, prepared_song_data).

    Ganti <raw-songs-table-name> dengan nama tabel yang berisi rekaman lagu mentah yang diserap pada langkah sebelumnya.

  4. Klik Menu Jalankan, dan pilih Jalankan Sel.

Langkah 5: Mengkueri data yang diubah

Dalam langkah ini, Anda memperluas alur pemrosesan dengan menambahkan kueri untuk menganalisis data lagu. Kueri ini menggunakan rekaman yang disiapkan yang dibuat pada langkah sebelumnya.

  1. Di bar samping, klik Ikon BaruBaru dan pilih Buku Catatan dari menu. Dialog Buat Notebook muncul.

  2. Masukkan nama untuk buku catatan. Contohnya,Analyze songs data. Ubah bahasa default ke SQL.

  3. Masukkan yang berikut ini di sel pertama buku catatan:

    -- Which artists released the most songs each year?
    SELECT
      artist_name,
      count(artist_name)
    AS
      num_songs,
      year
    FROM
      <prepared-songs-table-name>
    WHERE
      year > 0
    GROUP BY
      artist_name,
      year
    ORDER BY
      num_songs DESC,
      year DESC
    

    Ganti <prepared-songs-table-name> dengan nama tabel yang berisi data yang disiapkan. Contohnya,data_pipelines.songs_data.prepared_song_data.

  4. Klik Down Caret di menu tindakan sel, pilih Tambahkan Sel Di Bawah ini dan masukkan yang berikut ini di sel baru:

     -- Find songs for your DJ list
     SELECT
       artist_name,
       title,
       tempo
     FROM
       <prepared-songs-table-name>
     WHERE
       time_signature = 4
       AND
       tempo between 100 and 140;
    

    Ganti <prepared-songs-table-name> dengan nama tabel yang disiapkan yang dibuat di langkah sebelumnya. Contohnya,data_pipelines.songs_data.prepared_song_data.

  5. Untuk menjalankan kueri dan melihat output, klik Jalankan semua.

Langkah 6: Membuat pekerjaan Azure Databricks untuk menjalankan alur

Anda dapat membuat alur kerja untuk mengotomatiskan menjalankan langkah-langkah penyerapan, pemrosesan, dan analisis data menggunakan pekerjaan Azure Databricks.

  1. Di ruang kerja Ilmu Data & Teknik Anda, lakukan salah satu hal berikut ini:
    • Klik Ikon Alur KerjaAlur Kerja di bar samping dan klik Tombol Buat Pekerjaan.
    • Di bar samping, klik Ikon BaruBaru dan pilih Pekerjaan.
  2. Dalam kotak dialog tugas pada tab Tugas, ganti Tambahkan nama untuk pekerjaan Anda... dengan nama pekerjaan Anda. Misalnya, "Alur kerja Lagu".
  3. Di Nama tugas, masukkan nama untuk tugas pertama, misalnya, Ingest_songs_data.
  4. Di Jenis, pilih jenis tugas Buku Catatan .
  5. Di Sumber, pilih Ruang Kerja.
  6. Gunakan browser file untuk menemukan buku catatan penyerapan data, klik nama buku catatan, dan klik Konfirmasi.
  7. Di Kluster, pilih Shared_job_cluster atau kluster yang Anda buat di langkah tersebut Create a cluster .
  8. Klik Buat.
  9. Klik Tombol Tambahkan Tugas di bawah tugas yang baru saja Anda buat dan pilih Notebook.
  10. Di Nama tugas, masukkan nama untuk tugas, misalnya, Prepare_songs_data.
  11. Di Jenis, pilih jenis tugas Buku Catatan .
  12. Di Sumber, pilih Ruang Kerja.
  13. Gunakan browser file untuk menemukan buku catatan persiapan data, klik nama buku catatan, dan klik Konfirmasi.
  14. Di Kluster, pilih Shared_job_cluster atau kluster yang Anda buat di langkah tersebut Create a cluster .
  15. Klik Buat.
  16. Klik Tombol Tambahkan Tugas di bawah tugas yang baru saja Anda buat dan pilih Notebook.
  17. Di Nama tugas, masukkan nama untuk tugas, misalnya, Analyze_songs_data.
  18. Di Jenis, pilih jenis tugas Buku Catatan .
  19. Di Sumber, pilih Ruang Kerja.
  20. Gunakan browser file untuk menemukan buku catatan analisis data, klik nama buku catatan, dan klik Konfirmasi.
  21. Di Kluster, pilih Shared_job_cluster atau kluster yang Anda buat di langkah tersebut Create a cluster .
  22. Klik Buat.
  23. Untuk menjalankan alur kerja, Klik Tombol Jalankan Sekarang. Untuk melihat detail eksekusi, klik tautan di kolom Waktu mulai untuk eksekusi dalam tampilan eksekusi pekerjaan. Klik setiap tugas untuk melihat detail untuk tugas yang dijalankan.
  24. Untuk melihat hasil saat alur kerja selesai, klik tugas analisis data akhir. Halaman Output muncul dan menampilkan hasil kueri.

Langkah 7: Menjadwalkan pekerjaan alur data

Catatan

Untuk menunjukkan penggunaan pekerjaan Azure Databricks untuk mengatur alur kerja terjadwal, contoh memulai ini memisahkan langkah-langkah penyerapan, persiapan, dan analisis ke dalam buku catatan terpisah, dan setiap buku catatan kemudian digunakan untuk membuat tugas dalam pekerjaan. Jika semua pemrosesan terkandung dalam satu buku catatan, Anda dapat dengan mudah menjadwalkan buku catatan langsung dari UI buku catatan Azure Databricks. Lihat Membuat dan mengelola pekerjaan buku catatan terjadwal.

Persyaratan umum adalah menjalankan alur data secara terjadwal. Untuk menentukan jadwal pekerjaan yang menjalankan alur:

  1. Klik Ikon Alur KerjaAlur Kerja di bilah samping.
  2. Di kolom Nama, klik nama pekerjaan. Panel samping menampilkan detail Pekerjaan.
  3. Klik Tambahkan pemicu di panel Detail pekerjaan dan pilih Terjadwal dalam Jenis pemicu.
  4. Tentukan periode, waktu mulai, dan zona waktu. Secara opsional pilih kotak centang Perlihatkan Sintaks Cron untuk menampilkan dan mengedit jadwal dalam Sintaks Quartz Cron.
  5. Klik Simpan.

Pelajari lebih lanjut