Databricks Workflows est l orchestrateur natif de Databricks. En entretien, on évalue la capacité à l utiliser efficacement pour orchestrer des pipelines complexes avec des dépendances et du CI/CD.
Quand utilisez-vous Databricks Workflows plutôt qu Airflow ?
Comment modélisez-vous un pipeline à 10 étapes avec dépendances conditionnelles ?
## Configuration Job via SDK Python
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.jobs import *
w = WorkspaceClient()
job = w.jobs.create(
name='pipeline_analytics',
tasks=[
Task(
task_key='ingest',
notebook_task=NotebookTask(notebook_path='/pipelines/01_ingest'),
job_cluster_key='shared_cluster'
),
Task(
task_key='transform_dbt',
depends_on=[TaskDependency(task_key='ingest')],
python_wheel_task=PythonWheelTask(package_name='dbt-databricks', entry_point='dbt', parameters=['run', '--select', 'tag:daily'])
),
Task(
task_key='validate',
depends_on=[TaskDependency(task_key='transform_dbt')],
condition_task=ConditionTask(
op=ConditionTaskOp.EQUAL_TO,
left='{{tasks.transform_dbt.values.status}}',
right='SUCCESS'
)
),
Task(
task_key='alert_on_failure',
depends_on=[TaskDependency(
task_key='validate',
outcome='false' # déclencher si validate échoue
)],
notebook_task=NotebookTask(notebook_path='/pipelines/alert')
)
]
)Comment versionnnez-vous vos notebooks et jobs Databricks avec Git ?
Qu est-ce que les Databricks Asset Bundles ? Comment les utilisez-vous ?
## databricks.yml - Asset Bundle configuration
bundle:
name: mon-pipeline-analytics
variables:
environment:
default: dev
targets:
dev:
mode: development
workspace:
host: https://adb-xxxx.azuredatabricks.net
prod:
mode: production
workspace:
host: https://adb-yyyy.azuredatabricks.net
resources:
jobs:
pipeline_daily:
name: pipeline-daily-${bundle.target}
tasks:
- task_key: ingest
notebook_task:
notebook_path: ./notebooks/01_ingest
- task_key: transform
depends_on: [{task_key: ingest}]
notebook_task:
notebook_path: ./notebooks/02_transform
## Déploiement
databricks bundle deploy --target dev
databricks bundle deploy --target prodComment intégrez-vous les Databricks Asset Bundles dans GitHub Actions ?
## .github/workflows/databricks-deploy.yml
name: Deploy to Databricks
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: databricks/setup-cli@main
- name: Validate bundle
run: databricks bundle validate
env:
DATABRICKS_HOST: ${{ secrets.DATABRICKS_HOST }}
DATABRICKS_TOKEN: ${{ secrets.DATABRICKS_TOKEN }}
- name: Deploy to production
run: databricks bundle deploy --target prod
env:
DATABRICKS_HOST: ${{ secrets.DATABRICKS_HOST }}
DATABRICKS_TOKEN: ${{ secrets.DATABRICKS_TOKEN }}Comment minimisez-vous les coûts des jobs Databricks Workflows ?
| Niveau | Maitrise | Signal GO | NO-GO |
|---|---|---|---|
| Confirmé | Jobs basiques, tâches avec dépendances, job clusters | A créé un job multi-tâches avec dépendances, utilise des job clusters | Utilise des clusters all-purpose pour tous les jobs |
| Senior | Asset Bundles, CI/CD, Git integration, optimisation coûts | A déployé via Asset Bundles dans GitHub Actions, utilise des spot instances | Ne sait pas ce que sont les Asset Bundles |
Premier entretien gratuit. Rapport GO/NO-GO sous 48h.