共用方式為


開發 Databricks Apps

重要

Databricks Apps 處於 公開預覽狀態

注意

若要在 Databricks 工作區中部署和執行應用程式,您必須確定防火牆不會封鎖網域 *.databricksapps.com

本文提供使用 Databricks Apps 建立數據和 AI 應用程式的詳細數據,包括如何在 UI 中建立和編輯應用程式、如何使用 SQL 倉儲、秘密和 Databricks 作業等 Databricks 平臺功能、開發應用程式的最佳做法,以及使用支援架構開發應用程式的重要資訊。

如何? 在 Databricks Apps UI 中建立應用程式?

  1. 在側邊欄位中,點選 [新增圖示]、[新增],然後從功能表中選擇 select[應用程式]。

  2. 您可以從完整的預先建置範例應用程式開始,或使用原始程式碼和成品。

    • 若要從範例應用程式開始,select範本,請按一下您偏好的架構索引標籤,然後從應用程式中的 list 選擇 select。
    • 若要使用您的程式碼建立應用程式,select自訂

    檢視頁面以建立新的 Databricks 應用程式

  3. 按一下 [下一步] 。

  4. 在 [ 應用程式名稱] 欄位中,輸入應用程式的名稱,並選擇性地輸入描述。

    注意

    • 在建立應用程式之後,無法變更指派給 Databricks 應用程式的名稱,而且任何具有 Azure Databricks 工作區存取權的使用者都可以查看工作區中所有 Databricks 應用程式的名稱和部署歷程記錄。 此外,應用程式名稱會包含在寫入系統 tables的記錄中。 由於此可見度,您不應該在命名 Databricks 應用程式時包含敏感性資訊。
    • 此名稱在裝載應用程式的 Azure Databricks 工作區中必須是唯一的,而且必須只包含小寫字母、數位和連字元。

    檢視頁面以命名 Databricks 應用程式

    如果您選取 [ 自定義],請按兩下 [ 建立應用程式]。 如果您選取 [ 範本],請設定必要的資源,然後按兩下 [ 建立和部署應用程式]。 請參閱 將 Databricks 平臺功能指派給 Databricks 應用程式

    檢視頁面以命名 Databricks 應用程式並新增資源

    按兩下 [建立和部署應用程式] 或 [建立應用程式] 之後,應用程式詳細數據頁面隨即出現。 如果您選取 [ 範本],Databricks Apps 會建立您的應用程式,然後部署應用程式,包括來自範本的範例程式代碼,以及應用程式的必要設定。 應用程式的詳細資料頁面會顯示:

    • 應用程式建立和部署的狀態。
    • 您可以用來繼續在本機開發應用程式的步驟,包括將應用程式成品複製到本機環境,以及將本機變更同步處理回 Azure Databricks 工作區。

    檢視範本化 Databricks 應用程式的詳細數據

    如果您選取 [ 自定義],Databricks Apps 會建立您的應用程式。 因為您必須為應用程式新增程式碼和成品,因此您必須將應用程式部署為個別步驟。 應用程式的詳細資料頁面會顯示:

    • 應用程式建立的狀態。
    • 您可以使用以下步驟,將應用程式的程式代碼和成品從本機開發環境 sync 到 Azure Databricks 工作區,然後部署該應用程式。

    檢視範本化 Databricks 應用程式的詳細數據

    若要瞭解如何 set 本機開發環境、在本機建立或 update 應用程式的程式代碼和組態,以及 sync 並將應用程式部署至 Azure Databricks 工作區,請參閱 Get 開始使用 Databricks Apps

  5. 如果您選取 [ 範本 ],並想要將應用程式成品從工作區複製到本機開發環境,您可以使用 Databricks CLI:

    databricks workspace export-dir <workspace-path> <target-path>
    

    將:

    • <workspace-path> 包含應用程式程式代碼和成品的工作區檔案目錄路徑。
    • <target-path> 具有本機環境中要複製檔案的路徑。

將 Databricks 平臺功能指派給 Databricks 應用程式

注意

若要使用 Databricks SQL,服務主體需要存取 SQL 倉儲,以及查詢所存取的任何 tables。

若要使用 Databricks 平臺的功能,例如 Databricks SQL、Databricks 作業、馬賽克 AI 模型服務,以及 Databricks 秘密,請將這些功能新增至您的應用程式作為資源。 您可以在建立或編輯應用程式時新增資源。

  1. 在 [建立新的應用程式編輯應用程式 卡片中,按兩下 [進階設定]>[+ 新增資源],然後 select 資源類型。

    在UI中將SQL倉儲新增為應用程式資源

  2. 根據資源類型,完成設定資源所需的欄位,包括 [資源索引鍵 ] 字段。 此金鑰稍後會用來參考資源。

  3. 按一下 [檔案] 。

  4. 使用 SQL 倉儲資源索引鍵, app.yaml 在組態檔中新增資源的專案。 因為這是參考參數值的來源,而不是實際值,請使用 valueFrom 而不是 value

    env:
      - name: "DATABRICKS_WAREHOUSE_ID"
        valueFrom: "sql-warehouse"
    
  5. 若要參考應用程式程式代碼中的資源,請使用 字段的值 (name在此範例中) 參考已設定的DATABRICKS_WAREHOUSE_ID索引鍵值。

    import os
    
    os.getenv('DATABRICKS_WAREHOUSE_ID')
    

若要查看更多搭配應用程式使用資源的範例,包括 SQL 倉儲和模型服務端點,請參閱建立應用程式和最佳做法時的範本範例:使用秘密來儲存 Databricks 應用程式的敏感性資訊。

檢視 Databricks 應用程式的詳細數據

若要檢視 Databricks 應用程式的詳細資料頁面:

  1. 在側邊欄中按下 計算圖示 [計算]
  2. 移至 [ 應用程式] 索引標籤。
  3. 在 [名稱]column中,按下應用程式名稱。
  4. [概 ] 索引標籤隨即出現,其中包含應用程式的詳細數據,包括其狀態、部署位置,以及任何相關聯的資源。
    • 若要存取應用程式的部署歷程記錄,請移至 [ 部署] 索引標籤
    • 若要檢視應用程式的記錄,請移至 [ 記錄] 索引標籤。
    • 若要檢視應用程式的運行時間環境,包括環境變數和已安裝的套件,請移至 [ 環境 ] 索引標籤。

設定 Databricks 應用程式的許可權

若要管理應用程式的許可權,您必須擁有 CAN MANAGEIS OWNER 許可權。

  1. 在應用程式詳細數據頁面上,按兩下 [ 許可權]。
  2. [許可權設定]中,selectSelect 使用者、群組或服務主體... 下拉功能表,然後 select 使用者、群組、服務主體或所有工作區使用者。
  3. 從許可權下拉選單中選擇一個許可權 Select。
  4. 按兩下 [ 新增 ],然後按兩下 [ 儲存]。

維護 Databricks 應用程式的狀態

應用程式在記憶體中維護的任何狀態會在重新啟動時遺失。 如果您的應用程式需要在重新啟動之間維護狀態,請將狀態儲存在外部。 例如,您的應用程式可以使用 Databricks SQL工作區檔案Unity Catalogvolumes 來保存狀態。

從 Databricks 應用程式記錄

注意

若要在 Databricks Apps UI 或應用程式 URL 中檢視記錄,您的應用程式必須登入 stdoutstderr

若要檢視應用程式的標準輸出和標準錯誤,請在應用程式的詳細數據頁面上,按兩下 [記錄 ] 索引標籤。請參閱 檢視 Databricks 應用程式的詳細數據。

您也可以在連結檢視 <appurl>/logz 標準輸出和標準錯誤記錄檔。 例如,如果應用程式的 URL 是 https://my-app-1234567890.my-instance.databricksapps.com,則您可以在 檢視記錄。https://my-app-1234567890.my-instance.databricksapps.com/logz 若要尋找應用程式 URL,請移至應用程式詳細數據頁面。

指定 Databricks 應用程式的連結庫相依性

如果您的應用程式需要隨部署安裝之自動安裝的套件以外的 Python 連結庫,請使用 requirements.txt 檔案來定義這些連結庫。 如果您的檔案中的 requirements.txt 套件重複其中一個自動安裝的套件,則中的 requirements.txt 版本會覆寫自動安裝的套件。

如需了解作為應用程式部署的一部分所安裝的套件和版本的 list,請參閱 已安裝的 Python 函式庫

哪些 HTTP 標頭會傳遞至 Databricks 應用程式?

下列 X-Forwarded-* 標頭會從 Databricks Apps 反向 Proxy 傳遞至應用程式:

標頭 描述
X-Forwarded-Host 用戶端所要求的原始主機或網域。
X-Forwarded-Preferred-Username IdP 所提供的用戶名稱。
X-Forwarded-User IdP 提供的使用者 identifier。
X-Forwarded-Email IdP 所提供的用戶電子郵件。
X-Real-Ip 發出原始要求用戶端的 IP 位址。
X-Request-Id 要求的 UUID。

Databricks Apps 支援哪些架構?

您可以使用大部分的 Python 架構來開發您的應用程式。 為了查看使用特定框架的範例,包括 Dash、Gradio 和 Streamlit,請在 UI 中建立新應用程式時,參考來自範本應用程式庫的 select。 請參閱 如何? 在 Databricks Apps UI 中建立應用程式?

如需 Databricks Apps 運行時間環境中 set 的 Streamlit 特定變數,請參閱 Streamlit的默認環境變數。

最佳做法:使用秘密來儲存 Databricks 應用程式的機密資訊

Databricks 建議使用秘密來儲存敏感性資訊,例如驗證 credentials。 若要深入瞭解如何使用秘密,請參閱 管理秘密

若要搭配您的應用程式使用秘密:

  1. 將秘密設定為 應用程式資源

    在 UI 中新增秘密作為應用程式資源

  2. 在應用程式的組態檔中新增秘密的專案 app.yaml

    env:
      - name: "API_TOKEN"
        valueFrom: "api-token-value"
    
  3. 若要參考應用程式程式代碼中的秘密,請使用 字段的值 (name在此範例中) 參考已設定的API_TOKEN索引鍵值。

token = os.getenv('API_TOKEN')

最佳做法:使用 Azure Databricks 功能進行數據處理

Databricks Apps 計算是專為提供 UI 而設計。 為了確保您的應用程式可以有效率地支援多個使用者,您應該使用 Databricks 功能來執行簡單的數據處理以外的任何專案。 例如,使用 Databricks SQL 進行查詢處理和儲存數據集、Databricks 作業以進行數據處理,或查詢 AI 模型的模型。

最佳做法:遵循安全編碼最佳做法

Databricks 建議您在開發應用程式時遵循安全的編碼作法,包括參數化查詢以避免 SQL 插入式攻擊。 請參閱語句執行 API

實作 Databricks 應用程式的重要指導方針

  • Databricks Apps 會在 15 秒後SIGKILL傳送SIGTERM訊號,因此應用程式在收到SIGTERM訊號後應該正常關閉不超過 15 秒。 如果應用程式在 15 秒後尚未結束, SIGKILL 則會傳送訊號來終止進程和所有子進程。
  • 由於 Databricks Apps 是以非特殊許可權的系統使用者身分執行,因此無法執行需要在特殊許可權安全性內容中執行的作業,例如需要根使用者許可權的作業。
  • 要求會從反向 Proxy 轉送,因此應用程式不得相依於要求的來源。 Databricks Apps 環境會為支持的架構設定必要的組態 parameters。
  • 由於 Databricks 應用程式架構會管理傳輸層安全性 (TLS) connections,因此您的應用程式不得執行任何 TLS 連線或交握作業。
  • 您的應用程式必須實作,以 HTTP/2 純文字 (H2C) 格式處理要求。
  • Databricks 應用程式必須在 上 0.0.0.0 裝載 HTTP 伺服器,並使用環境變數中指定的 DATABRICKS_APP_PORT 埠號碼。 請參閱 環境變數