Megosztás:


Python-kerekes fájl létrehozása a Databricks Asset Bundles használatával

Ez a lap bemutatja, hogyan hozhat létre, helyezhet üzembe és futtathat Python-kerekes fájlokat a Databricks Asset Bundles használatával. Lásd Mik azok a Databricks-eszközcsomagok?.

Egy példakonfiguráció, amely egy JAR-t állít össze és feltölti a Unity Catalogba, lásd: JAR-fájlt feltöltő csomag a Unity Catalog.

Requirements

A csomag létrehozása sablonnal

Hozza létre a csomagot a Python Databricks Asset Bundles alapértelmezett csomagsablonjának használatával. Ez a csomag egy Python-kerékfájlba építendő fájlokból és egy Azure Databricks-feladat definícióból áll a Python-kerékfájl létrehozásához. Ezután érvényesítheti, üzembe helyezheti és létrehozhatja az üzembe helyezett fájlokat egy Python-kerékfájlba az Azure Databricks-munkaterületen található Python-kerekes feladatból.

Ha teljesen új csomagot szeretne létrehozni, olvassa el a Csomag létrehozása manuálisan című témakört.

1. lépés: A csomag létrehozása

A csomag tartalmazza az üzembe helyezni kívánt objektumokat és a futtatni kívánt munkafolyamatok beállításait.

  1. A terminál vagy a parancssor használatával váltson egy könyvtárra a helyi fejlesztőgépen, amely tartalmazza a sablon által létrehozott csomagot.

  2. A parancs futtatásához használja a Databricks parancssori bundle init felületének verzióját:

    databricks bundle init
    
  3. Template to use esetén hagyja meg az alapértelmezett értéket default-python a Enter billentyű lenyomásával.

  4. Ehhez Unique name for this projecthagyja meg az alapértelmezett értéket my_project, vagy írjon be egy másik értéket, majd nyomja le a billentyűt Enter. Ez határozza meg a csomag gyökérkönyvtárának nevét. Az aktuális munkakönyvtáron belül lett létrehozva ez a gyökérkönyvtár.

  5. A(z) Include a job that runs a notebook kiválasztásához válassza a no lehetőséget, és nyomja meg a Enter billentyűt. Ez arra utasítja a Databricks parancssori felületét, hogy ne vegyen fel mintajegyzetfüzetet a csomagba.

  6. A(z) Include an ETL pipeline kiválasztásához válassza a no lehetőséget, és nyomja meg a Enter billentyűt. Ez arra utasítja a Databricks parancssori felületét, hogy ne definiáljon mintafolyamatot a csomagban.

  7. Include a stub (sample) Python package esetén hagyja meg az alapértelmezett értéket yes a Enter billentyű lenyomásával. Ez arra utasítja a Databricks CLI-t, hogy adjon hozzá minta Python wheel csomag fájlokat és a kapcsolódó build utasításokat a csomaghoz.

  8. A(z) Use serverless kiválasztásához válassza a yes lehetőséget, és nyomja meg a Enter billentyűt. Ez arra utasítja a Databricks parancssori felületét, hogy konfigurálja a csomagot úgy, hogy kiszolgáló nélküli számításon fusson.

  9. Adja Default catalog for any tables created by this project [hive_metastore]meg egy meglévő Unity Catalog-katalógus nevét.

  10. Válassza Use a personal schema for each user working on this project. a yes számára.

2. lépés: A csomag felfedezése

A sablon által létrehozott fájlok megtekintéséhez váltson az újonnan létrehozott csomag gyökérkönyvtárára, és nyissa meg ezt a könyvtárat az előnyben részesített IDE-vel. A különösen fontos fájlok közé tartoznak a következők:

  • databricks.yml: Ez a fájl megadja a csomag nevét, hivatkozik a csomag fájljaira, megadja whl a buildbeállításokat, meghatározza a katalógus- és sémaváltozókat, valamint megadja a cél-munkaterületek beállításait.
  • resources/sample_job.job.yml: Ez a fájl megadja a Python wheel feladat beállításait. A feladatbeállításokról további információt a feladatban talál.
  • src/: Ez a mappa tartalmazza azokat a fájlokat, amelyeket a Python-kerekes feladat a Python-kerékfájl létrehozásához használ.
  • tests/: Ez a mappa mintaegység-teszteket tartalmaz.
  • README.md: Ez a fájl további információkat tartalmaz a csomagsablon első lépéseiről és használatáról.

Note

Ha a Python-kerékfájlt a Databricks Runtime 12.2 LTS-es vagy újabb verziójával rendelkező fürtre szeretné telepíteni, a következő legfelső szintű leképezést kell hozzáadnia a databricks.yml fájlhoz:

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

3. lépés: A csomagkonfiguráció ellenőrzése

Most ellenőrizze, hogy a csomagkonfiguráció érvényes-e.

  1. A gyökérkönyvtárból a Databricks parancssori felületével futtassa a bundle validate következő parancsot:

    databricks bundle validate
    
  2. Ha a csomagkonfiguráció összegzését adja vissza, az ellenőrzés sikeres volt. Ha bármilyen hibát ad vissza, javítsa ki a hibákat, majd ismételje meg ezt a lépést.

4. lépés: A csomag üzembe helyezése a távoli munkaterületen

Ezután helyezze üzembe a csomagot a távoli Azure Databricks-munkaterületen. Ezzel létrehozza a Python-kerékfájlt. Ellenőrizze, hogy létre lett-e hozva egy Azure Databricks-feladat a munkaterületen belül.

  1. A csomag gyökeréből a Databricks parancssori felületével futtassa a bundle deploy következő parancsot:

    databricks bundle deploy --target dev
    
  2. Győződjön meg arról, hogy a helyileg létrehozott Python-kerékfájl üzembe lett helyezve:

    1. Az Azure Databricks-munkaterület oldalsávján kattintson a Munkaterület elemre.
    2. Kattintson a következő mappára: Workspace > Users ><your-username>>.bundle ><project-name>> dev > artifacts > .internal><whl-file-name>.whl.

    A Python-kerékfájlnak ebben a mappában kell lennie.

  3. Ellenőrizze, hogy a feladat létrejött-e:

    1. Az Azure Databricks-munkaterület oldalsávján kattintson a Feladatok > Folyamatok elemre.
    2. Ha szeretné, válassza ki a Feladatok és a Saját tulajdonú szűrőket.
    3. Kattintson a [dev <your-username>] sample_job.
    4. Kattintson a Feladatok fülre. Egy python_wheel_task kell lennie.

Ha a lépés után módosítja a csomagot, ismételje meg a 3–4. lépést annak ellenőrzéséhez, hogy a csomagkonfiguráció továbbra is érvényes-e, majd telepítse újra a projektet.

5. lépés: Az üzembe helyezett projekt futtatása

Most aktiválja az Azure Databricks-feladat futtatását a munkaterületen.

  1. A gyökérkönyvtárból a Databricks parancssori felületével futtassa a bundle run következő parancsot:

    databricks bundle run --target dev sample_job
    
  2. Másolja ki a terminálban megjelenő értéket Run URL , és illessze be ezt az értéket a webböngészőbe az Azure Databricks-munkaterület megnyitásához.

  3. Az Azure Databricks-munkaterületen, miután a feladat sikeresen befejeződött, és zöld címsort jelenít meg, kattintson a feladat tevékenységére az eredmények megtekintéséhez.

A whl összeállítása a Poetry vagy a setuptools használatával

Ha az alapértelmezett Python-sablont használja databricks bundle init, létrejön egy csomag, amely bemutatja, hogyan konfigurálható egy csomag, ami Python-kereket hoz létre uv és pyproject.toml használatával. Érdemes lehet azonban inkább a Poetryt vagy setuptools használni, hogy kereket építsünk.

A Poetry vagy a setuptools telepítése

  1. Telepítse a(z) Poetry-t vagy setuptools:

    Poetry

    • Telepítse a Poetry 1.6-os vagy újabb verzióját, ha még nincs telepítve. A Poetry telepített verziójának ellenőrzéséhez futtassa a parancsot poetry -V vagy poetry --versiona .
    • Győződjön meg arról, hogy telepítve van a Python 3.10-es vagy újabb verziója. A Python verziójának ellenőrzéséhez futtassa a parancsot python -V vagy python --versiona .

    Setuptools

    Ha még nincsenek telepítve, telepítse a wheel és setuptools csomagokat az alábbi parancs futtatásával:

    pip3 install --upgrade wheel setuptools
    
  2. Ha ezt a csomagot egy Git-szolgáltatóval kívánja tárolni, vegyen fel egy .gitignore fájlt a projekt gyökérkönyvtárában, és adja hozzá a következő bejegyzéseket ehhez a fájlhoz:

    Poetry

    .databricks
    dist
    

    Setuptools

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

Buildfájlok hozzáadása

  1. A csomag gyökérkönyvtárában hozza létre a következő mappákat és fájlokat, attól függően, hogy a Poetry-t vagy a setuptools-t használja a Python wheel fájlok létrehozásához:

    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. Adja hozzá a következő kódot a pyproject.toml fájlhoz 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"
    
    • Cserélje le my-author-name a szervezet elsődleges kapcsolattartójának a nevét.
    • Cserélje le my-author-name>@<my-organization a szervezet elsődleges e-mail-címére.
    • Cserélje le <my-package-description> a Python-kerekes fájl megjelenítési leírására.

    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"
      ]
    )
    
    • Cserélje le a elemet https://<my-url> a szervezet URL-címére.
    • Cserélje le <my-author-name> a szervezet elsődleges kapcsolattartójának a nevét.
    • Cserélje le <my-author-name>@<my-organization> a szervezet elsődleges e-mail-címére.
    • Cserélje le <my-package-description> a Python-kerekes fájl megjelenítési leírására.

Összetevők csomagkonfigurációjának hozzáadása

  1. Adja hozzá a leképezési artifacts konfigurációt az databricks.yml összetevő létrehozásához whl :

    Poetry

    Ez a konfiguráció futtatja a poetry build parancsot, és azt jelzi, hogy a pyproject.toml fájl elérési útja ugyanabban a könyvtárban található, mint a databricks.yml fájl.

    Note

    Ha már létrehozott egy Python-kerékfájlt, és csak telepíteni szeretné, módosítsa a következő csomagkonfigurációs fájlt a artifacts leképezés kihagyásával. A Databricks CLI ezután feltételezi, hogy a Python-kerékfájl már elkészült, és automatikusan üzembe helyezi a libraries tömb whl bejegyzéseiben megadott fájlokat.

    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

    Ez a konfiguráció futtatja a setuptools parancsot, és azt jelzi, hogy a setup.py fájl elérési útja ugyanabban a könyvtárban található, mint a databricks.yml fájl.

    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>