用戶在使用遠程Git源代碼時無法查看作業結果

Databricks不管理遠程回購的權限,因此您必須將更改與本地筆記本同步,以便非管理員用戶可以查看結果。

寫的ravirahul.padmanabhan

最後發布時間:2023年3月7日

問題

您正在使用存儲在遠程Git存儲庫(AWS|Azure|GCP).Databricks用戶可以查看權限(不是工作空間管理員或作業的所有者)不能訪問或查看通過提交的臨時作業的結果dbutils.notebook.run ()來自家長筆記本。

導致

當作業可見性控製(AWS|Azure|GCP),則用戶隻能看到其訪問控製級別允許的作業。對於存儲在工作區中的筆記本,這可以正常工作。但是,Databricks並不管理遠程Git回購的訪問控製,因此它不知道存儲在Git中的筆記本是否有任何權限限製。唯一有權限訪問遠程Git回購中的筆記本的Databricks用戶是作業所有者。結果,其他非管理員用戶被阻止查看,即使他們已經查看了可以查看數據庫中的權限。

解決方案

您可以通過將作業筆記本源配置為Databricks工作區,並使作業的第一個任務從遠程Git回購中獲取最新更改來解決這個問題。

這允許作業必須確保使用存儲在共享的遠程Git repo中的最新版本的筆記本的場景。

作業工作流通過將更改從遠程回購同步到本地筆記本來顯示作業開始。

這張圖說明了這個過程分為兩部分。首先,從遠程Git repo獲取最新的更改到筆記本。然後,在同步了最新版本的筆記本之後,開始運行筆記本作為作業的一部分。

刪除

信息

當您在UI中創建作業時,請確保類型設置為筆記本而且設置為工作空間.選擇回購當選擇筆記本路徑時。
示例作業創建,類型設置為Notebook,源設置為Workspace。

配置秘密訪問

創建Databricks個人訪問令牌

遵循用戶的個人訪問令牌AWS|Azure|GCP)文件,以創建個人訪問令牌。

創建秘密作用域

遵循創建一個數據庫支持的秘密作用域AWS|Azure|GCP)文檔來創建一個秘密範圍。

將您的個人訪問令牌和Databricks實例存儲在secret作用域中

遵循在databicks支持的作用域中創建一個秘密AWS|Azure|GCP)文檔,以將您創建的個人訪問令牌和Databricks實例存儲為秘密範圍內的新秘密。

Databricks實例是工作空間的主機名,例如xxxxx.cloud.www.eheci.com。

使用腳本同步最新的更改

這個示例Python代碼從遠程Git repo中提取最新版本,並將其與本地筆記本同步。這確保在處理作業之前本地筆記本是最新的。

執行腳本前,需要替換腳本中的如下值:

  • < repo-id >—遠程Git repo的名稱。
  • < scope-name >-包含秘密的瞄準鏡名稱。
  • < secret-name-1 >-保存Databricks實例的秘密的名稱。
  • < secret-name-2 >-保存您的個人訪問令牌的秘密的名稱。


%python import requests import json databricks_instance = dbutls .secrets。Get (scope = "", key = "") token = dbutls .secrets。get(scope = "", key = "") url = f"{databricks_instance}/api/2.0/repos/" #使用repo api獲取repo id https://docs.www.eheci.com/dev-tools/api/latest/repos.html#operation/get-repos payload = json。dump ({"branch": "main" #使用分支/標簽。參考https://docs.www.eheci.com/dev-tools/api/latest/repos.html#operation/update-repo}) headers ={"授權":f"持有者{令牌}","Content-Type": "application/json"} response =請求。request("PATCH", url, headers=headers, data=payload, timeout=60) print(response.text) if response.textstatus_code != 200: raise異常(f"讀取操作失敗。響應代碼:{Response}")
這篇文章有用嗎?