在Databricks作業中使用dbt
預覽
dbt任務完成公共預覽.
您可以將dbt Core項目作為Databricks作業中的任務運行。通過運行dbt Core項目作為作業任務,您可以受益於以下Databricks job特性:
自動化dbt任務並計劃包含dbt任務的工作流。
監視dbt轉換並就轉換的狀態發送通知。
將dbt項目與其他任務一起包含在工作流中。例如,您的工作流可以使用Auto Loader攝取數據,使用dbt轉換數據,並使用notebook任務分析數據。
自動歸檔來自作業運行的工件,包括日誌、結果、清單和配置。
要了解有關dbt Core的更多信息,請參閱印度生物技術部的文檔.
開發和生產工作流程
Databricks建議使用Databricks SQL倉庫開發dbt項目。使用Databricks SQL倉庫,您可以測試dbt生成的SQL並使用SQL倉庫查詢曆史調試dbt生成的查詢。學習如何使用dbt核心和dbt-databricks
包以在開發環境中創建和運行DBT項目,請參見連接到dbt核心.
要在生產環境中運行dbt轉換,Databricks建議在Databricks作業中使用dbt任務。默認情況下,dbt任務將在單節點作業集群上運行dbt Python進程,並根據所選SQL倉庫運行dbt生成的SQL。
您可以在無服務器SQL倉庫、通用集群或任何其他平台上運行dbt轉換dbt-supported倉庫.本文通過示例討論前兩個選項。
請注意
針對SQL倉庫開發dbt模型,並在通用集群的生產環境中運行它們,可能會導致性能和SQL語言支持方麵的細微差異。Databricks建議通用集群和SQL倉庫使用相同的Databricks Runtime版本。
需求
要在Databricks作業中使用dbt項目,必須設置Git與Databricks Repos的集成.不能從DBFS運行dbt項目。
你一定有無服務器或pro SQL倉庫啟用。
你必須有Databricks SQL權利.
Databricks推薦dbt-databricks包,不是dbt-spark包。dbt-databricks包是dbt-spark為Databricks優化的一個分支。
創建並運行您的第一個dbt作業
下麵的示例使用jaffle_shop項目,演示DBT核心概念的示例項目。要創建運行jaffle shop項目的作業,請執行以下步驟。
轉到你的Databricks登陸頁麵,做以下其中一項:
點擊工作流在側欄中,單擊.
在側欄中,單擊新並選擇工作.
上出現的任務對話框中的任務選項卡中,取代為你的工作添加一個名字…你的工作名稱。
在任務名稱,輸入任務名稱。
在類型,選擇印度生物技術部任務類型。
在源,點擊編輯並輸入jaffle商店GitHub存儲庫的詳細信息。
在Git存儲庫URL,輸入jaffle shop項目的URL。
在Git引用(分支/標簽/提交),輸入
主要
.也可以使用標記或SHA。
點擊確認.
在印度生物技術部的命令文本框,指定要運行的DBT命令(deps,種子,運行).必須在每個命令前加上
印度生物技術部
.命令按照指定的順序執行。在數據倉庫,選擇一個SQL倉庫來運行dbt生成的SQL。的數據倉庫下拉菜單隻顯示無服務器和pro SQL倉庫。
(可選)可以為任務輸出指定模式。默認情況下,模式
默認的
使用。(可選)如果需要修改dbt Core所在集群,請單擊dbt CLI集群.為了最小化成本,集群默認為一個小型單節點集群。
(可選)可指定dbt-databricks版本。例如,將dbt任務固定到開發和生產的特定版本:
下依賴庫,點擊在當前dbt-databricks版本旁邊。
點擊添加.
在添加依賴庫,按PyPI頁簽中,輸入dbt-package版本號包文本框(例如,
dbt-databricks = = 1.2.0
).點擊添加.
請注意
Databricks建議將dbt任務固定到dbt- Databricks包的特定版本,以確保開發和生產運行使用相同的版本。Databricks推薦1.2.0或更高版本的dbt-databricks包。
點擊創建.
要運行作業,請單擊.
查看dbt作業任務的結果
作業完成後,可以通過從數據庫運行SQL查詢來測試結果筆記本或者通過跑步查詢在你的數據倉庫。例如,查看以下示例查詢:
顯示表在<模式>;
選擇*從<模式>.beplay体育app下载地址限製10;
取代<模式>
使用任務配置中配置的模式名。
API的例子
你也可以使用職位API 2.1創建和管理包含DBT任務的作業。使用實例創建一個帶有單個dbt任務的作業:
{“名稱”:“jaffle_shop DBT作業”,“max_concurrent_runs”:1,“git_source”:{“git_url”:“https://github.com/dbt-labs/jaffle_shop”,“git_provider”:“gitHub”,“git_branch”:“主要”},“job_clusters”:[{“job_cluster_key”:“dbt_CLI”,“new_cluster”:{“spark_version”:“10.4.x-photon-scala2.12”,“node_type_id”:“i3.xlarge”,“num_workers”:0,“spark_conf”:{“spark.master”:“地方(* 4)”,“spark.databricks.cluster.profile”:“singleNode”},“custom_tags”:{“ResourceClass”:“SingleNode”}}}),“任務”:[{“task_key”:“轉換”,“job_cluster_key”:“dbt_CLI”,“dbt_task”:{“命令”:[“印度生物技術部deps”,“印度生物技術部種子”,“印度生物技術部運行”),“warehouse_id”:“1 a234b567c8de912”},“庫”:[{“pypi”:{“包”:“dbt-databricks > = 1.0.0, < 2.0.0”}}]}]}
(高級)在通用集群下運行dbt生成的SQL
要使用通用集群運行dbt任務,請使用自定義集群profiles.yml
定義要連接到的集群。要使用通用集群創建運行jaffle shop項目的作業,請執行以下步驟。
創建的分支jaffle_shop存儲庫。
將分叉的存儲庫克隆到桌麵。例如,您可以運行如下命令:
Git克隆https://github.com/<用戶名>/jaffle_shop.git
取代
<用戶名>
用你的GitHub手柄。創建一個名為
profiles.yml
在jaffle_shop
目錄,內容如下:jaffle_shop:目標:databricks_job輸出:databricks_job:類型:磚方法:http模式:“< schema >”宿主:“< http_host >”http_path:“< http_path > / < cluster_id >”令牌:”{{env_var(“DBT_ACCESS_TOKEN”)}}”
取代
<模式>
使用項目表的模式名。取代
< http_host >
與服務器主機名的值。連接細節選項卡為您的SQL倉庫。取代
< http_path >
與HTTP路徑的值。連接細節選項卡為您的SQL倉庫。取代
< cluster_id >
與要連接的集群的ID。
您不需要在文件中指定秘密,例如訪問令牌,因為您要將該文件檢入源代碼控製。相反,該文件使用dbt模板功能在運行時動態插入憑證。
在數據倉庫中,選擇沒有(手動).
在配置文件目錄文件所在目錄的相對路徑
profiles.yml
文件。將路徑值保留為空,以使用存儲庫根的默認值。將該文件簽入Git並將其推到派生的存儲庫中。例如,您可以運行如下命令:
Git添加配置文件。Yml git提交-m“添加配置文件。yml我的Databricks工作”git推
點擊工作流在Databricks用戶界麵的側邊欄。
選擇dbt作業並單擊任務選項卡。
在源,點擊編輯並輸入您的fork jaffle商店GitHub存儲庫詳細信息。
在數據倉庫中,選擇沒有(手動).
在配置文件目錄文件所在目錄的相對路徑
profiles.yml
文件。將路徑值保留為空,以使用存儲庫根的默認值。