İş oluşturma ve yönetimi

Python SDK ile Databricks

Avi Steinberg

Senior Software Engineer

Databricks Notebook yolu

  • Databricks Jobs, Databricks Notebook içinde yazılan kodu çalıştırabilir
  • WorkspaceClient.current_user.me().user_name oturum açan kullanıcının adını alır
  • Bir not defterinin yolu /Users/${username}/${notebook_name} biçimindedir
# Çalışma alanımızda My_Notebook adlı bir not defteri olduğunu varsayalım
w = WorkspaceClient()
notebook_path = f'/Users/{w.current_user.me().user_name}/My_Notebook'
Python SDK ile Databricks

Bir Databricks işi oluşturma

WorkspaceClient.jobs.create(createParams)

Oluşturulacak işi tanımlamak için name ve tasks parametrelerini geçirin

createParams:
  name: str
  tasks: List[Task]
Task:
  description=str
  notebook_task=NotebookTask
  task_key=str
NotebookTask:
  notebook_path: str
1 https://databricks-sdk-py.readthedocs.io/en/latest/workspace/jobs/jobs.html
Python SDK ile Databricks

Bir Databricks işi oluşturma ve çalıştırma

from databricks.sdk import WorkspaceClient

# "My_Notebook" adlı not defterine işaret eden yolu oluşturun
w = WorkspaceClient()
notebook_path = f'/Users/{w.current_user.me().user_name}/My_Notebook'

# Datacamp_Test_Notebook'u çalıştıran bir iş oluşturun new_job = w.jobs.create(name='sdk-dc-project-task', tasks=[jobs.Task( description="create_notebook_test", notebook_task=jobs.NotebookTask(notebook_path=notebook_path), task_key="my-key") ]) print(f"New Job Id={new_job.job_id}")
w.jobs.run_now(job_id=new_job.job_id).result() # Oluşturulan işi çalıştır
1 https://docs.databricks.com/en/dev-tools/sdk-python.html
Python SDK ile Databricks

Databricks işleri listeleme

from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
jobs = w.jobs.list()
for job in jobs:
    print(f"JobId={job.job_id}")
JobId=888763141802192
JobId=37050453972815
JobId=681550316180975
JobId=629994089852037
Python SDK ile Databricks

Bir Databricks işini silme

WorkspaceClient.jobs.delete(job_id: str)
1 1. https://databricks-sdk-py.readthedocs.io/en/latest/workspace/jobs/jobs.html
Python SDK ile Databricks

Bir Databricks işini silme

# Bunun önkoşulu, Databricks kümesinde istenen
# Databricks not defterinin oluşturulmuş olmasıdır
w = WorkspaceClient()
notebook_path = f'/Users/{w.current_user.me().user_name}/My_Notebook'
# Datacamp_Test_Notebook'u çalıştıran bir iş oluşturun
new_job = w.jobs.create(name='sdk-dc-project-task',
                            tasks=[
                              jobs.Task(description="create_notebook_test",
                                        existing_cluster_id=cluster_id,
                      notebook_task=jobs.NotebookTask(notebook_path=notebook_path),
                                        task_key="my-key")
                            ])

w.jobs.delete(job_id=new_job.job_id)
1 1. https://databricks-sdk-py.readthedocs.io/en/latest/workspace/jobs/jobs.html
Python SDK ile Databricks

Cron sözdizimi

İşi aşağıdaki saatlerde zamanlamak için Cron ifadeleri:

  1. Her gün 03:30:00 = 0 30 3 * * ?
  2. Her gün 14:45:00 = 0 45 2 * * ?
1 https://www.quartz-scheduler.org/documentation/quartz-2.3.0/tutorials/crontrigger.html
Python SDK ile Databricks

Bir işi zamanlama

Bir not defterini her gün saat 03:00'te çalışacak şekilde zamanlayabiliriz

# Datacamp_Test_Notebook'u çalıştıran bir iş oluşturun
cron_expression = "0 0 3 * * ?"

created_job = w.jobs.create( name='sdk-dc-project-task', tasks=[jobs.Task(description="test",
notebook_task=jobs.NotebookTask(notebook_path=notebook_path), task_key="my-key")], timeout_seconds=3600,
schedule=jobs.CronSchedule(quartz_cron_expression=cron_expression, timezone_id="America/New_York") )
1 https://databricks-sdk-py.readthedocs.io/en/latest/workspace/jobs/jobs.html
Python SDK ile Databricks

Hadi pratik yapalım!

Python SDK ile Databricks

Preparing Video For Download...