[英]Airflow API call returning 400 when clearing and rerunning a task
我正在設置一個運行少量數據塊筆記本的 Airflow 環境。 我已經使用創建集群的 PythonOperator 設置了一個 create_cluster 任務,提供權限並安裝所需的庫,所有這些都使用Databricks REST API 2.0
。
我在安裝庫的 API 調用中遇到問題。 當我觸發 DAG 運行時,一切正常。 同時,如果我正在清除 create_cluster 任務,庫 API 將返回 400 響應。 我什至不確定為什么會這樣。 PFB 我打的 api 電話:
response_lib = s.post('https://%s/api/2.0/libraries/install' % (DOMAIN),
headers={'Authorization': 'Bearer %s' % TOKEN},
json={
"cluster_id": clusterid,
"libraries": [
{
"jar": "dbfs:/FileStore/jars/4092ccd0_a657_4de2_865a_6a413580bbcd-ojdbc8.jar"
},
{
"jar": "dbfs:/FileStore/jars/d4c36be6_f697_443e_84fd_179ce07e510a-fc98ca3a_e4c2_48de_8a76_63153afe6588_spark_salesforce_assembly_1_1_3_PR46_maxCharsPerColumn_c6b42-231af.jar"
},
{
"jar": "dbfs:/FileStore/jars/2e72bd30_5861_4f2f_ba94_b591b3c604b0-jars_a68bd7d7_5e75_493c_8720_c70ff3c1f58e_RedshiftJDBC42_1_2_12_1017_fefdf-6e9da.jar"
},
{
"maven": {
"coordinates": "com.springml:spark-salesforce_2.11:1.1.3"
}
},
{
"pypi": {
"package": "cx_Oracle"
}
},
{
"pypi": {
"package": "numpy==1.16.1"
}
},
{
"pypi": {
"package": "tabulate"
}
},
{
"pypi": {
"package": "pysftp"
}
},
{
"pypi": {
"package": "s3fs"
}
},
{
"pypi": {
"package": "regex"
}
}
]
}
)
if response_lib.status_code==200:
print('Library installation response',response_lib)
else:
print("Libraries could not be installed")
print(response_lib)
這是重試任務時print(response_lib)
的 output: <Response [400]>
我正在使用由 AWS 管理的 Airflow。 有人可以幫我理解為什么會這樣。 Databricks 官方文檔Libraries API 2.0
解決了這個問題。 在調用安裝 API 之前,提供了 10 秒的延遲。 這似乎解決了這個問題。
代碼:
Event().wait(10)
response_lib = s.post('https://%s/api/2.0/libraries/install' % (DOMAIN),
headers={'Authorization': 'Bearer %s' % TOKEN},
...........
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.