Uppdaterar från Jobb-API 2.1 till 2.2
Den här artikeln beskriver uppdateringar och förbättringar av funktionerna i version 2.2 av Jobb-API:et. Den innehåller information som hjälper dig att uppdatera dina befintliga API-klienter så att de fungerar med den här nya versionen. Dessa uppdateringar omfattar standardköning av jobb och bättre stöd för sidnumrering när svar inkluderar fält som innehåller fler än 100 element. Eftersom version 2.2 förbättrar det befintliga stödet för sidnumrering av stora resultatuppsättningar rekommenderar Databricks att du använder det för dina API-skript och -klienter, särskilt när svar kan innehålla många uppgifter.
Mer information om ändringarna mellan versionerna 2.0 och 2.1 av API:et finns i Uppdatera från Jobb-API 2.0 till 2.1.
Förutom de ändringar som ingår i version 2.1 av Databricks-jobb-API:et har version 2.2 följande förbättringar:
Jobb placeras i kö som standard
Jobbköer är en valfri funktion som förhindrar att körningar av jobb missas när resurser inte är tillgängliga för körningen. Jobbköer stöds i versionerna 2.0, 2.1 och 2.2 av Jobb-API:et, med följande skillnader i standardhanteringen av köer:
- För jobb som skapats med Jobb-API 2.2 är köning aktiverat som standard. Du kan inaktivera köning genom att ställa in fältet
queue
tillfalse
i begärandetexten när du skapar eller uppdaterar ett jobb. - För jobb som skapats med versionerna 2.0 och 2.1 av Jobb-API:et är köhantering inte aktiverat som standard. Med dessa versioner måste du aktivera köning genom att ange fältet
queue
tilltrue
i begärandeorgan när du skapar eller uppdaterar ett jobb.
Du kan aktivera eller inaktivera kön när du skapar ett jobb, delvis uppdaterar ett jobbeller uppdaterar alla jobbinställningar.
Se Jobbkö.
Stöd för paginering av långa listor över uppgifter och uppgiftskörningar
För att stödja jobb med ett stort antal aktiviteter eller aktivitetskörningar ändrar Jobs API 2.2 hur stora resultatuppsättningar returneras för följande begäranden:
- Listjobb: Se Ändringar i listjobb och jobbkörningsbegäranden.
- Listjobb körs: Se Ändringar i listjobben och Lista jobb kör begäranden.
- Få ett enda jobb: Se Få ett enda jobb.
- Hämta en enda jobbkörning: Se Hämta en enda körning.
Jobb-API 2.2 ändrar sidnumrering för dessa begäranden enligt följande:
- Fält som representerar listor över element som uppgifter, parametrar, job_clusters eller miljöer är begränsade till 100 element per svar. Om fler än 100 värden är tillgängliga innehåller svarstexten ett
next_page_token
fält som innehåller en token för att hämta nästa sida med resultat. - Sidnumrering läggs till för svar på
Get a single job
- ochGet a single job run
-begäranden. Sidnumrering för svaren påList job
ochList job runs
begäran lades till med Jobb-API 2.1.
Följande är ett exempel på svarstext från en Get a single job
begäran om ett jobb med fler än 100 uppgifter. För att demonstrera den tokenbaserade pagineringsfunktionen, utelämnar det här exemplet de flesta av fälten som ingår i svarstexten.
{
"job_id": 11223344,
"settings": {
"tasks": [
{
"task_key": "task-1"
},
{
"task_key": "task-2"
},
{
"task_key": "task-..."
},
{
"task_key": "task-100"
}
]
},
"next_page_token": "Z29...E="
}
Om du vill hämta nästa uppsättning resultat anger du frågeparametern page_token
i nästa begäran till värdet som returneras i fältet next_page_token
. Till exempel /api/2.2/jobs/get?job_id=11223344&page_token=Z29...E=
.
Om inga fler resultat är tillgängliga inkluderas inte fältet next_page_token
i svaret.
Följande avsnitt innehåller mer information om uppdateringar av var och en av list
och get
begäranden.
Ändringar i List jobs
- och List job runs
-begäranden
För begärandena Lista jobb och Lista jobb körningar tas parametern has_more
på rotnivån för svarsobjektet bort. Använd i stället förekomsten av next_page_token
för att avgöra om fler resultat är tillgängliga. Annars förblir funktionerna för att sidnumrera resultat oförändrade.
För att förhindra stora svarsinnehåll utelämnas de översta tasks
- och job_clusters
-matriserna för varje jobb standardmässigt från svaren. Om du vill inkludera dessa matriser för varje jobb som ingår i svarstexten för dessa begäranden lägger du till parametern expand_tasks=true
i begäran. När expand_tasks
är aktiverat returneras högst 100 element i matriserna tasks
och job_clusters
. Om någon av dessa matriser har fler än 100 element är ett has_more
fält (inte att förväxla med det has_more
fält på rotnivå som tas bort) i job
-objektet inställt på true.
Dock är endast de första 100 elementen tillgängliga. Du kan inte hämta ytterligare uppgifter eller kluster efter de första 100 med listjobb begäran. Om du vill hämta fler element använder du förfrågningar som returnerar ett enda jobb eller en enda jobbexekvering. De uppdateringar som stöder sidnumrering av stora svarsfält beskrivs i följande avsnitt.
Hämta ett enda jobb
I Jobb-API 2.2 stöds nu paginering av fälten tasks
och job_clusters
i förfrågan Get a single job för att hämta detaljer om ett enskilt jobb, när storleken på något av fälten överstiger 100 element. Använd fältet next_page_token
i objektroten för att avgöra om fler resultat är tillgängliga. Värdet för det här fältet används sedan som värde för page_token
frågeparameter i efterföljande begäranden. Matrisfält med färre än 100 element på en sida kommer att vara tomma på efterföljande sidor.
Hämta en enda körning
I Jobs-API 2.2 stöder förfrågan Get a single run för att hämta detaljer om en enda körning nu paginering av fälten tasks
och job_clusters
när storleken på något av fälten överstiger 100 element. Använd fältet next_page_token
i objektroten för att avgöra om fler resultat är tillgängliga. Värdet för det här fältet används sedan som värde för page_token frågeparametern i efterföljande begäranden. Matrisfält med färre än 100 element på en sida kommer att vara tomma på efterföljande sidor.
Jobb-API 2.2 lägger också till frågeparametern only_latest
till den här slutpunkten för att endast visa de senaste körningsförsöken i arrayen tasks
. När parametern only_latest
är true
utelämnas alla körningar som ersätts av ett nytt försök eller en reparation från svaret.
När run_id
refererar till en ForEach
uppgiftsutförande finns ett fält med namnet iterations
i svaret. Fältet iterations
är en matris som innehåller information om alla körningar av den ForEach
aktivitetens kapslade uppgift och har följande egenskaper:
- Schemat för varje objekt i matrisen
iterations
är detsamma som för objekten itasks
matrisen. - Om frågeparametern
only_latest
är inställd påtrue
inkluderas endast de senaste körningsförsöken i matriseniterations
. - Sidnumrering tillämpas på matrisen
iterations
i stället för dentasks
matrisen. - Matrisen
tasks
är fortfarande en del av svaret och innehåller körning av uppgiftenForEach
.
För att lära dig mer om ForEach
-aktiviteten, se ForEach-aktivitetens dokumentation.
Se till exempel följande svar för en ForEach
uppgift med vissa fält utelämnade:
{
"job_id": 53,
"run_id": 759600,
"number_in_job": 7,
"original_attempt_run_id": 759600,
"state": {
"life_cycle_state": "TERMINATED",
"result_state": "SUCCESS",
"state_message": ""
},
"cluster_spec": {},
"start_time": 1595943854860,
"setup_duration": 0,
"execution_duration": 0,
"cleanup_duration": 0,
"trigger": "ONE_TIME",
"creator_user_name": "user@databricks.com",
"run_name": "process_all_numbers",
"run_type": "JOB_RUN",
"tasks": [
{
"run_id": 759600,
"task_key": "process_all_numbers",
"description": "Process all numbers",
"for_each_task": {
"inputs": "[ 1, 2, ..., 101 ]",
"concurrency": 10,
"task": {
"task_key": "process_number_iteration"
"notebook_task": {
"notebook_path": "/Users/user@databricks.com/process_single_number",
"base_parameters": {
"number": "{{input}}"
}
}
},
"stats": {
"task_run_stats": {
"total_iterations": 101,
"scheduled_iterations": 101,
"active_iterations": 0,
"failed_iterations": 0,
"succeeded_iterations": 101,
"completed_iterations": 101
}
}
}
"state": {
"life_cycle_state": "TERMINATED",
"result_state": "SUCCESS",
"state_message": ""
}
}
],
"iterations": [
{
"run_id": 759601,
"task_key": "process_number_iteration",
"notebook_task": {
"notebook_path": "/Users/user@databricks.com/process_single_number",
"base_parameters": {
"number": "{{input}}"
}
},
"state": {
"life_cycle_state": "TERMINATED",
"result_state": "SUCCESS",
"state_message": ""
}
},
{
"run_id": 759602,
"task_key": "process_number_iteration",
"notebook_task": {
"notebook_path": "/Users/user@databricks.com/process_single_number",
"base_parameters": {
"number": "{{input}}"
}
},
"state": {
"life_cycle_state": "TERMINATED",
"result_state": "SUCCESS",
"state_message": ""
}
}
],
"format": "MULTI_TASK",
"next_page_token": "eyJ..x9"
}