開始
用戶指南
管理指南
參考指南
資源
2022年10月11日更新
給我們反饋
這篇文章展示了如何使用磚起程拓殖的提供者創建一個集群,一個筆記本和一個工作在現有的Databricks中工作空間.
本文是以下Databricks入門文章的姊妹篇:
在Databricks上運行第一個ETL工作負載,它使用一個通用集群、一個Python筆記本和一個運行筆記本的作業。
作為一名數據科學家,開始使用Databricks它使用了一個通用集群和一個SQL筆記本。
在Databricks Lakehouse運行您的第一個端到端分析管道它使用一個與Unity Catalog、一個Python筆記本和一個運行筆記本的作業一起工作的集群。
您還可以調整本文中的terrform配置,在您的工作空間中創建自定義集群、筆記本和作業。
一個磚的工作區。
在您的本地開發機器上,您必須:
起程拓殖CLI。看到下載起程拓殖在Terraform網站上。
以下其中之一:
Databricks命令行界麵(Databricks CLI),配置了您的Databricks工作區實例URL例如,https://dbc-1234567890123456.cloud.www.eheci.com,以及您的Databricks個人訪問令牌磚配置——令牌.看到設置CLI而且設置身份驗證.
https://dbc-1234567890123456.cloud.www.eheci.com
磚配置——令牌
請注意
作為安全最佳實踐,在使用自動化工具、係統、腳本和應用程序進行身份驗證時,Databricks建議您使用屬於服務主體的訪問令牌,而不是工作區用戶。有關更多信息,請參見管理服務主體.
以下兩個環境變量:
DATABRICKS_HOST,設置為您的Databricks的值工作區實例URL例如,https://dbc-1234567890123456.cloud.www.eheci.com
DATABRICKS_HOST
DATABRICKS_TOKEN,設置為您的Databricks個人訪問令牌的值。看到生成一個個人訪問令牌.
DATABRICKS_TOKEN
要設置這些環境變量,請參閱您的操作係統文檔。
在此步驟中,您將設置一個Terraform項目,以定義Terraform使用您的工作空間進行身份驗證的設置。您還可以為Terraform部署到您的工作空間的資源定義設置。
創建一個空目錄,然後切換到它。此目錄包含您的terrform項目文件。(每一組單獨的terrform項目文件必須位於自己的父目錄中。)為此,在您的終端或PowerShell中,運行如下命令:
mkdir terraform_cluster_notebook_job& &cdterraform_cluster_notebook_job
在這個空目錄中,創建一個名為auth.tf,並將以下內容添加到文件中。此配置初始化Databricks Terraform提供程序,並使用您的工作空間對Terraform進行身份驗證。
auth.tf
要使用Databricks CLI配置文件進行身份驗證,需要添加以下內容:
變量“databricks_connection_profile”{描述="要使用的Databricks連接配置文件的名稱。"類型=字符串}#初始化Databricks Terraform提供程序。起程拓殖{required_providers{磚={源=“磚/磚”}}}#使用Databricks命令行驗證。提供者“磚”{配置文件=var.databricks_connection_profile}檢索當前用戶的信息。數據“databricks_current_user”“我”{}
要使用環境變量進行身份驗證,請添加以下內容:
#初始化Databricks Terraform提供程序。起程拓殖{required_providers{磚={源=“磚/磚”}}}#使用環境變量進行認證。提供者“磚”{}檢索當前用戶的信息。數據“databricks_current_user”“我”{}
創建另一個名為auth.auto.tfvars,並將以下內容添加到文件中。該文件包含用於在工作空間中驗證terrform的變量值。用您自己的值替換占位符值。
auth.auto.tfvars
databricks_connection_profile=“默認”
要使用環境變量進行身份驗證,不需要auth.auto.tfvars文件。
運行起程拓殖初始化命令。該命令通過創建額外的幫助文件和下載必要的Terraform模塊來初始化Terraform項目。
起程拓殖初始化
起程拓殖init
如果您正在創建一個集群,請創建另一個名為cluster.tf,並將以下內容添加到文件中。該內容創建了一個具有最小資源量的集群。該集群使用最新的Databricks運行時長期支持(LTS)版本。
cluster.tf
對於使用Unity Catalog的集群:
變量“cluster_name”{}變量“cluster_autotermination_minutes”{}變量“cluster_num_workers”{}變量“cluster_data_security_mode”{}#創建“最小”數量的集群允許的資源數量。數據“databricks_node_type”“最小”{local_disk=真正的}#使用最新的Databricks運行時#長期支持(LTS)版本數據“databricks_spark_version”“latest_lts”{long_term_support=真正的}資源“databricks_cluster”“這”{cluster_name=var.cluster_namenode_type_id=數據.databricks_node_type.最小的.idspark_version=數據.databricks_spark_version.latest_lts.idautotermination_minutes=var.cluster_autotermination_minutesnum_workers=var.cluster_num_workersdata_security_mode=var.cluster_data_security_mode}輸出“cluster_url”{價值=databricks_cluster.這.url}
對於通用集群:
變量“cluster_name”{描述=“集群的名稱。”類型=字符串默認的=“我的集群”}變量“cluster_autotermination_minutes”{描述="由於不活動自動終止前需要多少分鍾"類型=數量默認的=60}變量“cluster_num_workers”{描述=“工人的數量。”類型=數量默認的=1}#創建“最小”數量的集群允許的資源數量。數據“databricks_node_type”“最小”{local_disk=真正的}#使用最新的Databricks運行時#長期支持(LTS)版本數據“databricks_spark_version”“latest_lts”{long_term_support=真正的}資源“databricks_cluster”“這”{cluster_name=var.cluster_namenode_type_id=數據.databricks_node_type.最小的.idspark_version=數據.databricks_spark_version.latest_lts.idautotermination_minutes=var.cluster_autotermination_minutesnum_workers=var.cluster_num_workers}輸出“cluster_url”{價值=databricks_cluster.這.url}
如果您正在創建集群,請創建另一個名為cluster.auto.tfvars,並將以下內容添加到文件中。該文件包含用於定製集群的變量值。用您自己的值替換占位符值。
cluster.auto.tfvars
cluster_name=“我的集群”cluster_autotermination_minutes=60cluster_num_workers=1cluster_data_security_mode=“SINGLE_USER”
cluster_name=“我的集群”cluster_autotermination_minutes=60cluster_num_workers=1
如果您正在創建一個筆記本,請創建另一個名為notebook.tf,在文件中添加如下內容:
notebook.tf
變量“notebook_subdirectory”{描述="用於存儲筆記本的子目錄的名稱。"類型=字符串默認的=“起程拓殖”}變量“notebook_filename”{描述=筆記本的文件名。類型=字符串}變量“notebook_language”{描述=“筆記本上的語言。”類型=字符串}資源“databricks_notebook”“這”{路徑=" ${data.databricks_current_user.me.home}美元/{var.notebook_subdirectory}美元/{var.notebook_filename}"語言=var.notebook_language源=”。/ ${var.notebook_filename}"}輸出“notebook_url”{價值=databricks_notebook.這.url}
將以下筆記本代碼保存到與notebook.tf文件:
Python筆記本的在Databricks上運行第一個ETL工作負載,文件名為notebook-getting-started-etl-quick-start.py內容如下:
notebook-getting-started-etl-quick-start.py
# Databricks筆記本源代碼#導入功能從pyspark.sql.functions進口input_file_name,current_timestamp#定義下麵代碼中使用的變量file_path=“/ databricks-datasets / structured-streaming /事件”用戶名=火花.sql(的“選擇regexp_replace (current_user (), [^ a-zA-Z0-9)”,“_”)”).第一個() (0]table_name=f"{用戶名}_etl_quickstart”checkpoint_path=f“/ tmp /{用戶名}/ _checkpoint / etl_quickstart”#清除之前演示執行的數據火花.sql(f如果存在,刪除表{table_name}")dbutils.fs.rm(checkpoint_path,真正的)#配置Auto Loader將JSON數據導入Delta表(火花.readStream.格式(“cloudFiles”).選項(“cloudFiles.format”,“json”).選項(“cloudFiles.schemaLocation”,checkpoint_path).負載(file_path).選擇(“*”,input_file_name().別名(“source_file”),current_timestamp().別名(“processing_time”)).writeStream.選項(“checkpointLocation”,checkpoint_path).觸發(availableNow=真正的).toTable(table_name))#命令 ----------df=火花.讀.表格(table_name)#命令 ----------顯示(df)
為SQL筆記本作為一名數據科學家,開始使用Databricks,文件名為notebook-getting-started-quick-start.sql內容如下:
notebook-getting-started-quick-start.sql
--磚筆記本源--魔法%python--魔法鑽石=(火花.讀--魔法.格式(“csv”)--魔法.選項(“頭”,“真正的”)--魔法.選項(“inferSchema”,“真正的”)--魔法.負載(“/ databricks-datasets / Rdatasets /數據- 001 / csv / ggplot2 / diamonds.csv”)--魔法)--魔法--魔法鑽石.寫.格式(“δ”).保存(“/ mnt /δ/鑽石”)--命令----------下降表格如果存在鑽石;創建表格鑽石使用δ位置“/ mnt /δ/鑽石”--命令----------選擇顏色,avg(價格)作為價格從鑽石集團通過顏色訂單通過顏色
Python筆記本的在Databricks Lakehouse運行您的第一個端到端分析管道,文件名為notebook-getting-started-lakehouse-e2e.py內容如下:
notebook-getting-started-lakehouse-e2e.py
# Databricks筆記本源代碼external_location=“< your_external_location >”目錄=“< your_catalog >”dbutils.fs.把(f"{external_location}/ foobar.txt”,“Hello world !”,真正的)顯示(dbutils.fs.頭(f"{external_location}/ foobar.txt”))dbutils.fs.rm(f"{external_location}/ foobar.txt”)顯示(火花.sql(f“顯示模式{目錄}"))#命令 ----------從pyspark.sql.functions進口上校#設置工作空間隔離參數並重置demo用戶名=火花.sql(的“選擇regexp_replace (current_user (), [^ a-zA-Z0-9)”,“_”)”).第一個() (0]數據庫=f"{目錄}.e2e_lakehouse_{用戶名}_db”源=f"{external_location}/ e2e-lakehouse-source”表格=f"{數據庫}.target_table”checkpoint_path=f"{external_location}/ _checkpoint / e2e-lakehouse-demo”火花.sql(f“c.username = '{用戶名}’”)火花.sql(f“設置c.database ={數據庫}")火花.sql(f“c.source = '{源}’”)火花.sql(如果數據庫存在則刪除${c.database}級聯”)火花.sql(“創建數據庫{c.database}")火花.sql(“使用美元{c.database}")#清除之前演示執行的數據dbutils.fs.rm(源,真正的)dbutils.fs.rm(checkpoint_path,真正的)#定義一個類來加載批量數據到源類LoadData:def__init__(自我,源):自我.源=源defget_date(自我):試一試:df=火花.讀.格式(“json”).負載(源)除了:返回“2016-01-01”batch_date=df.selectExpr("max(distinct(date(tpep_pickup_datetime))) + 1天").第一個() (0]如果batch_date.月= =3.:提高異常(“源數據了”)返回batch_datedefget_batch(自我,batch_date):返回(火花.表格(“samples.nyctaxi.trips”).過濾器(上校(“tpep_pickup_datetime”).投(“日期”)= =batch_date))defwrite_batch(自我,批處理):批處理.寫.格式(“json”).模式(“添加”).保存(自我.源)defland_batch(自我):batch_date=自我.get_date()批處理=自我.get_batch(batch_date)自我.write_batch(批處理)RawData=LoadData(源)#命令 ----------RawData.land_batch()#命令 ----------#導入功能從pyspark.sql.functions進口input_file_name,current_timestamp#配置Auto Loader將JSON數據導入Delta表(火花.readStream.格式(“cloudFiles”).選項(“cloudFiles.format”,“json”).選項(“cloudFiles.schemaLocation”,checkpoint_path).負載(file_path).選擇(“*”,input_file_name().別名(“source_file”),current_timestamp().別名(“processing_time”)).writeStream.選項(“checkpointLocation”,checkpoint_path).觸發(availableNow=真正的).選項(“mergeSchema”,“真正的”).toTable(表格))#命令 ----------df=火花.讀.表格(table_name)#命令 ----------顯示(df)
如果正在創建筆記本,則創建另一個名為notebook.auto.tfvars,並將以下內容添加到文件中。該文件包含用於定製筆記本配置的變量值。
notebook.auto.tfvars
Python筆記本的在Databricks上運行第一個ETL工作負載:
notebook_subdirectory=“起程拓殖”notebook_filename=“notebook-getting-started-etl-quick-start.py”notebook_language=“巨蟒”
為SQL筆記本作為一名數據科學家,開始使用Databricks:
notebook_subdirectory=“起程拓殖”notebook_filename=“notebook-getting-started-quickstart.sql”notebook_language=“SQL”
Python筆記本的在Databricks Lakehouse運行您的第一個端到端分析管道:
notebook_subdirectory=“起程拓殖”notebook_filename=“notebook-getting-started-lakehouse-e2e.py”notebook_language=“巨蟒”
如果您正在創建一個筆記本,在Databricks工作區中,請確保為筆記本成功運行設置任何需求,請參考以下說明:
Python筆記本在Databricks上運行第一個ETL工作負載
SQL筆記本作為一名數據科學家,開始使用Databricks
Python筆記本在Databricks Lakehouse運行您的第一個端到端分析管道
如果正在創建作業,請創建另一個名為job.tf,並將以下內容添加到文件中。該內容創建一個作業來運行筆記本。
job.tf
變量“job_name”{描述=“給這個工作起個名字。”類型=字符串默認的=“我的工作”}資源“databricks_job”“這”{的名字=var.job_nameexisting_cluster_id=databricks_cluster.這.cluster_idnotebook_task{notebook_path=databricks_notebook.這.路徑}email_notifications{on_success=[數據.databricks_current_user.我.user_name]on_failure=[數據.databricks_current_user.我.user_name]}}輸出“job_url”{價值=databricks_job.這.url}
如果正在創建作業,則創建另一個名為job.auto.tfvars,並將以下內容添加到文件中。該文件包含一個用於定製作業配置的變量值。
job.auto.tfvars
job_name=“我的工作”
在此步驟中,您將運行terrform配置,將集群、筆記本和作業部署到Databricks工作區中。
命令來檢查您的terrform配置是否有效起程拓殖驗證命令。如果報告了任何錯誤,請修複它們,然後再次運行該命令。
起程拓殖驗證
在Terraform實際執行之前,通過運行起程拓殖計劃命令。
起程拓殖計劃
將集群、筆記本和作業部署到您的工作區中起程拓殖應用命令。當提示部署時,鍵入是的並按輸入.
起程拓殖應用
是的
Terraform部署項目中指定的資源。部署這些資源(特別是集群)可能需要幾分鍾。
的輸出中,如果創建了集群起程拓殖應用命令,複製旁邊的鏈接cluster_url,並將其粘貼到您的網頁瀏覽器的地址欄。
cluster_url
如果您創建了一個筆記本,在輸出起程拓殖應用命令,複製旁邊的鏈接notebook_url,並將其粘貼到您的網頁瀏覽器的地址欄。
notebook_url
在使用筆記本之前,您可能需要自定義其內容。關於如何定製筆記本,請參考相關文檔。
的輸出中,如果創建了一個作業起程拓殖應用命令,複製旁邊的鏈接job_url,並將其粘貼到您的網頁瀏覽器的地址欄。
job_url
在運行筆記本之前,您可能需要自定義其內容。有關如何定製筆記本的相關文檔,請參閱本文開頭的鏈接。
如果您創建了一個作業,運行該作業的方法如下:
點擊現在運行在工作頁麵。
作業完成運行後,要查看作業運行的結果,請在已完成運行(過去60天)列表中,單擊最近的時間條目開始時間列。的輸出窗格顯示運行筆記本的代碼的結果。
在此步驟中,您將從您的工作區中刪除上述資源。
命令從工作區中刪除集群、筆記本和作業起程拓殖摧毀命令。當提示刪除時,鍵入是的並按輸入.
起程拓殖摧毀
Terraform刪除項目中指定的資源。