我正在尝试在 CI/CD 集成中进行 Databricks 的端到端实施
例如:使用 Rest API
创建集群、安装库和其他内容为此,我们需要工作空间的域(工作空间 URL)和令牌(访问令牌)
如何自动获取工作区 url 和访问令牌,以便我可以使用 python 在 REST API 代码中使用它们。
例如:
This the task for create cluster in release pipeline
def cluster_create():
response = requests.post(
'https://%s/api/2.0/clusters/create' % (DOMAIN),
headers={'Authorization': 'Bearer %s' % TOKEN},
json={
"cluster_name": "cluster",
"spark_version": "7.3.x-scala2.12",
"node_type_id": "Standard_DS3_v2",
"autotermination_minutes": 10,
"autoscale" : {
"min_workers": 1,
"max_workers": 3
}
}
)
if response.status_code == 200:
print(response.json()['cluster_id'])
os.environ["DBRKS_CLUSTER_ID"] = response.json()["cluster_id"]
return response.json()['cluster_id']
else:
print("Error launching cluster: %s: %s" %
(response.json()["error_code"], response.json()["message"]))
步骤:
创建 Data Bricks 工作区后如何在发布管道中获取域或令牌以自动替换创建集群任务中的变量以进行持续集成和持续开发
如果工作区是在同一管道中创建的,并且是通过服务主体或托管标识创建的,那么您可以使用 Azure Active Directory 令牌对工作区进行身份验证。 有关代币生成的详细说明请参阅文档。 请注意,在您的情况下,服务主体或托管身份还不是工作区的一部分,因此您需要按照非工作区用户的服务主体的 API 访问部分中的说明进行操作,您需要在其中生成两个 AAD 令牌.
附注真的,我建议使用 Terraform Databricks 提供程序 - 它将使创建和更新对象变得更简单。我们有使用 terraform 的 CI/CD 的公共示例。
原始答案(在问题完善之前):
标准方法是将这些数据放入 Azure DevOps 变量(或变量组)并从管道中使用。
附注我有一个用于笔记本的 CI/CD 管道的示例,您可以在 README 中找到一些说明。
您可以将 Databricks URL 和访问令牌作为环境变量安全地存储在 Git 存储库的设置中。在 CI/CD 管道执行期间,您可以检索这些环境变量来配置 Databricks 客户端。
例如,您可以将 Databricks 实例 URL 存储为 DATABRICKS_HOST,将访问令牌存储为 DATABRICKS_TOKEN。在脚本中设置 Databricks 客户端实例时,您可以使用这些环境变量来配置客户端。方法如下:
databricks_client_instance = databricks_client.configured({ "host": {"env": "DATABRICKS_HOST"}, # 存储 Databricks URL 的环境变量 "token": {"env": "DATABRICKS_TOKEN"} # 存储 Databricks 访问令牌的环境变量 })