Azure Databricks api /api/2.0/pipelines не удалось получить конвейеры "pipeline_type": "DBSQL".Python

Программы на Python
Ответить
Anonymous
 Azure Databricks api /api/2.0/pipelines не удалось получить конвейеры "pipeline_type": "DBSQL".

Сообщение Anonymous »

Я хочу вызвать /api/2.0/pipelines, чтобы получить несколько конвейеров обновления материализованного представления. Я вижу их в пользовательском интерфейсе Databricks, но не могу получить их через API REST Pipelines.
Я бы вызвал /api/2.0/pipelines/{pipeline_id}/stop, чтобы управлять конвейером. Это означает, что у меня должен быть доступ для получения конвейеров.
Я провел небольшое исследование и обнаружил, что тип конвейера обновления материализованного представления — это конвейер DBSQL, а не обычный конвейер DTL. Из-за этого я не могу использовать API конвейеров для получения этих конвейеров.
Есть ли какие-либо другие способы или API, которые я могу использовать для получения идентификатора конвейера обновления материализованного представления и последующего управления ими?
def search_and_cancel_pipeline_by_name_pattern(pipeline_name_pattern):
"""
List pipelines using the filter parameter, paginate if needed, and cancel matching pipelines.
"""
try:
pattern = re.compile(pipeline_name_pattern)
page_token = None
found = False

while True:
params = {
"max_results": 10,
"order_by": "name asc"
}
# Use filter if possible to reduce client-side filtering
# Convert regex to SQL LIKE pattern if possible
# For example: r".*foo.*" -> "%foo%"
pipelines_url = f"{DATABRICKS_INSTANCE}/api/2.0/pipelines"
response = requests.get(pipelines_url, headers=headers, params=params)
response.raise_for_status()
data = response.json()
print(json.dumps(data, indent=2, ensure_ascii=False)) # Print full response

pipelines = data.get('statuses', [])
print(f"Total pipelines fetched: {len(pipelines)}.")

for pipeline in pipelines:
pipeline_id = pipeline.get('pipeline_id')
pipeline_name = pipeline.get('name', '')
state = pipeline.get('state', '')
print(f"PipelineID: {pipeline_id}, Name: {pipeline_name}, State: {state}")
if pipeline_name and pattern.match(pipeline_name):
stop_url = f"{DATABRICKS_INSTANCE}/api/2.0/pipelines/{pipeline_id}/stop"
resp = requests.post(stop_url, headers=headers)
resp.raise_for_status()
print(f"✅ Successfully requested to stop Pipeline (ID: {pipeline_id}, Name: {pipeline_name}).")
found = True

page_token = data.get("next_page_token")
if not page_token:
break

if not found:
print(f"No pipeline matched regex '{pipeline_name_pattern}'.")
except requests.exceptions.RequestException as e:
print(f"Error occurred during operation: {e}")


Подробнее здесь: https://stackoverflow.com/questions/798 ... eline-type
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»