Bagikan melalui


Membangun file roda Python menggunakan Bundel Aset Databricks

Halaman ini menjelaskan cara membangun, menyebarkan, dan menjalankan file roda Python menggunakan Bundel Aset Databricks. Lihat Apa itu Bundel Aset Databricks?.

Untuk contoh konfigurasi yang membangun JAR dan mengunggahnya ke Katalog Unity, lihat Bundel yang mengunggah file JAR ke Katalog Unity.

Requirements

Membuat bundel menggunakan templat

Buat bundel menggunakan templat bundel default Aset Databricks untuk Python. Bundel ini terdiri dari file untuk dibuat menjadi file roda Python dan definisi pekerjaan Azure Databricks untuk membangun file roda Python ini. Anda kemudian memvalidasi, menyebarkan, dan mengemas file yang disebarkan menjadi file roda Python dari tugas roda Python dalam ruang kerja Azure Databricks Anda.

Jika Anda ingin membuat bundel dari awal, lihat Membuat bundel secara manual.

Langkah 1: Buat bundel

Bundel berisi aset yang ingin Anda sebarkan dan pengaturan untuk alur kerja yang ingin Anda jalankan.

  1. Gunakan terminal atau perintah Anda untuk beralih ke direktori pada komputer pengembangan lokal Anda yang akan berisi bundel templat yang dihasilkan.

  2. Gunakan versi Databricks CLI untuk menjalankan bundle init perintah:

    databricks bundle init
    
  3. Untuk Template to use, biarkan nilai default-python default dengan menekan Enter.

  4. Untuk Unique name for this project, biarkan nilai my_projectdefault , atau ketik nilai yang berbeda, lalu tekan Enter. Ini menentukan nama direktori akar untuk bundel ini. Direktori akar ini dibuat dalam direktori kerja Anda saat ini.

  5. Untuk Include a job that runs a notebook, pilih no dan tekan Enter. Ini menginstruksikan Databricks CLI untuk tidak menambahkan buku catatan sampel ke bundel Anda.

  6. Untuk Include an ETL pipeline, pilih no dan tekan Enter. Ini menginstruksikan Databricks CLI untuk tidak menentukan alur sampel dalam bundel Anda.

  7. Untuk Include a stub (sample) Python package, biarkan nilai yes default dengan menekan Enter. Ini menginstruksikan Databricks CLI untuk menambahkan sampel file paket roda Python dan instruksi build terkait ke bundel Anda.

  8. Untuk Use serverless, pilih yes dan tekan Enter. Ini menginstruksikan Databricks CLI untuk mengonfigurasi bundel Anda agar berjalan pada komputasi tanpa server.

  9. Untuk Default catalog for any tables created by this project [hive_metastore], masukkan nama katalog Unity Catalog yang sudah ada.

  10. Untuk Use a personal schema for each user working on this project., pilih yes.

Langkah 2: Jelajahi bundel

Untuk melihat file yang dihasilkan templat, beralihlah ke direktori akar bundel yang baru dibuat dan buka direktori ini dengan IDE pilihan Anda. File yang menarik meliputi yang berikut ini:

  • databricks.yml: File ini menentukan nama bundel, mencakup referensi ke file bundel, menentukan whl pengaturan build, menentukan variabel katalog dan skema, dan menentukan pengaturan untuk ruang kerja target.
  • resources/sample_job.job.yml: File ini menentukan pengaturan pekerjaan roda Python. Untuk informasi tentang pengaturan pekerjaan, lihat pekerjaan.
  • src/: Folder ini mencakup file yang digunakan pekerjaan roda Python untuk membangun file roda Python.
  • tests/: Folder ini berisi pengujian unit sampel.
  • README.md: File ini berisi informasi tambahan tentang memulai dan menggunakan templat bundel ini.

Note

Jika Anda ingin menginstal file roda Python pada kluster dengan Databricks Runtime 12.2 LTS atau di bawahnya, Anda harus menambahkan pemetaan tingkat atas berikut ke databricks.yml file:

# Applies to all tasks of type python_wheel_task.
experimental:
  python_wheel_wrapper: true

Langkah 3: Memvalidasi konfigurasi bundel

Sekarang periksa apakah konfigurasi bundel valid.

  1. Dari direktori akar, gunakan Databricks CLI untuk menjalankan bundle validate perintah:

    databricks bundle validate
    
  2. Jika ringkasan konfigurasi bundel dikembalikan, maka validasi berhasil. Jika ada kesalahan yang dikembalikan, perbaiki kesalahan, lalu ulangi langkah ini.

Langkah 4: Sebarkan bundel ke ruang kerja jarak jauh

Selanjutnya, sebarkan bundel ke ruang kerja Azure Databricks jarak jauh Anda. Ini membangun file roda Python. Verifikasi bahwa pekerjaan Azure Databricks dibuat di dalam ruang kerja Anda.

  1. Dari akar bundel, gunakan Databricks CLI untuk menjalankan perintah bundle deploy.

    databricks bundle deploy --target dev
    
  2. Konfirmasikan bahwa file roda Python yang dibuat secara lokal telah disebarkan:

    1. Di bilah samping ruang kerja Azure Databricks Anda, klik Ruang Kerja.
    2. Klik folder berikut: Ruang Kerja > Pengguna ><your-username>> .bundle > dev <project-name> artifacts > .internal >>><whl-file-name>.whl.

    File roda Python harus berada di folder ini.

  3. Periksa apakah tugas telah dibuat:

    1. Di bilah sisi ruang kerja Azure Databricks Anda, klik Tugas & Pipeline.
    2. Secara opsional, pilih filter Pekerjaan dan Dimiliki oleh saya .
    3. Klik [dev <your-username>] sample_job.
    4. Klik tab Tugas . Harus ada satu python_wheel_task.

Jika Anda membuat perubahan pada bundel setelah langkah ini, ulangi langkah 3-4 untuk memeriksa apakah konfigurasi bundel Anda masih valid lalu sebarkan ulang proyek.

Langkah 5: Jalankan proyek yang disebarkan

Sekarang picu menjalankan pekerjaan Azure Databricks di ruang kerja Anda.

  1. Dari direktori akar, gunakan Databricks CLI untuk menjalankan bundle run perintah:

    databricks bundle run --target dev sample_job
    
  2. Salin nilai Run URL yang muncul di terminal Anda dan tempelkan nilai ini ke browser web Anda untuk membuka ruang kerja Azure Databricks Anda.

  3. Di ruang kerja Azure Databricks Anda, setelah tugas berhasil diselesaikan dan memperlihatkan bilah judul hijau, klik tugas pekerjaan untuk melihat hasilnya.

Membangun paket whl menggunakan Poetry atau setuptools

Saat Anda menggunakan databricks bundle init dengan templat default-python, bundel dibuat yang menunjukkan cara mengonfigurasi bundel yang membangun roda Python menggunakan uv dan pyproject.toml. Namun, Anda mungkin ingin menggunakan Puisi atau setuptools sebagai gantinya untuk membangun roda.

Menginstal Poetry atau setuptools

  1. Instal Poetry atau setuptools:

    Poetry

    • Instal Puisi, versi 1.6 atau lebih tinggi, jika belum diinstal. Untuk memeriksa versi Puisi yang diinstal, jalankan perintah poetry -V atau poetry --version.
    • Pastikan Anda memiliki Python versi 3.10 atau yang lebih baru yang terinstal. Untuk memeriksa versi Python Anda, jalankan perintah python -V atau python --version.

    Setuptools

    Instal paket wheel dan setuptools jika mereka belum diinstal, dengan menjalankan perintah berikut:

    pip3 install --upgrade wheel setuptools
    
  2. Jika Anda ingin menyimpan bundel ini dengan penyedia Git, tambahkan .gitignore file di akar proyek, dan tambahkan entri berikut ke file ini:

    Poetry

    .databricks
    dist
    

    Setuptools

    .databricks
    build
    dist
    src/my_package/my_package.egg-info
    

Menambahkan file build

  1. Di direktori root bundel Anda, buat folder dan file berikut, tergantung pada apakah Anda menggunakan Poetry atau setuptools untuk membangun file wheel Python.

    Poetry

    ├── src
    │     └── my_package
    │           ├── __init__.py
    │           ├── main.py
    │           └── my_module.py
    └── pyproject.toml
    

    Setuptools

    ├── src
    │     └── my_package
    │           ├── __init__.py
    │           ├── main.py
    │           └── my_module.py
    └── setup.py
    
  2. Tambahkan kode berikut ke pyproject.toml file atau setup.py :

    Pyproject.toml

    [tool.poetry]
    name = "my_package"
    version = "0.0.1"
    description = "<my-package-description>"
    authors = ["my-author-name <my-author-name>@<my-organization>"]
    
    [tool.poetry.dependencies]
    python = "^3.10"
    
    [build-system]
    requires = ["poetry-core"]
    build-backend = "poetry.core.masonry.api"
    
    [tool.poetry.scripts]
    main = "my_package.main:main"
    
    • Ganti my-author-name dengan nama kontak utama organisasi Anda.
    • Ganti my-author-name>@<my-organization dengan alamat kontak email utama organisasi Anda.
    • Ganti <my-package-description> dengan deskripsi tampilan untuk file roda Python Anda.

    Setup.py

    from setuptools import setup, find_packages
    
    import src
    
    setup(
      name = "my_package",
      version = "0.0.1",
      author = "<my-author-name>",
      url = "https://<my-url>",
      author_email = "<my-author-name>@<my-organization>",
      description = "<my-package-description>",
      packages=find_packages(where='./src'),
      package_dir={'': 'src'},
      entry_points={
        "packages": [
          "main=my_package.main:main"
        ]
      },
      install_requires=[
        "setuptools"
      ]
    )
    
    • Ganti https://<my-url> dengan URL organisasi Anda.
    • Ganti <my-author-name> dengan nama kontak utama organisasi Anda.
    • Ganti <my-author-name>@<my-organization> dengan alamat kontak email utama organisasi Anda.
    • Ganti <my-package-description> dengan deskripsi tampilan untuk file roda Python Anda.

Menambahkan konfigurasi bundel artefak

  1. Tambahkan konfigurasi pemetaan artifacts ke databricks.yml Anda untuk membangun artefak whl.

    Poetry

    Konfigurasi ini menjalankan poetry build perintah dan menunjukkan jalur ke pyproject.toml file berada dalam direktori yang sama dengan databricks.yml file.

    Note

    Jika Anda telah membuat file wheel Python dan hanya ingin menerapkannya, maka ubah file konfigurasi bundel berikut dengan menghapus pemetaan artifacts. Databricks CLI kemudian akan beranggapan bahwa file wheel Python sudah dibuat dan secara otomatis akan menyebarkan file yang ditentukan dalam entri array librarieswhl.

    bundle:
      name: my-wheel-bundle
    
    artifacts:
      default:
        type: whl
        build: poetry build
        path: .
    
    resources:
      jobs:
        wheel-job:
          name: wheel-job
          tasks:
            - task_key: wheel-task
              new_cluster:
                spark_version: 13.3.x-scala2.12
                node_type_id: Standard_DS3_v2
                data_security_mode: USER_ISOLATION
                num_workers: 1
              python_wheel_task:
                entry_point: main
                package_name: my_package
              libraries:
                - whl: ./dist/*.whl
    
    targets:
      dev:
        workspace:
        host: <workspace-url>
    

    Setuptools

    Konfigurasi ini menjalankan setuptools perintah dan menunjukkan jalur ke setup.py file berada dalam direktori yang sama dengan databricks.yml file.

    bundle:
      name: my-wheel-bundle
    
    artifacts:
      default:
        type: whl
        build: python3 setup.py bdist wheel
        path: .
    
    resources:
      jobs:
        wheel-job:
          name: wheel-job
          tasks:
            - task_key: wheel-task
              new_cluster:
                spark_version: 13.3.x-scala2.12
                node_type_id: Standard_DS3_v2
                data_security_mode: USER_ISOLATION
                num_workers: 1
              python_wheel_task:
                entry_point: main
                package_name: my_package
              libraries:
                - whl: ./dist/*.whl
    
    targets:
      dev:
        workspace:
        host: <workspace-url>