磚公用事業
磚實用程序(dbutils
)使執行強大的任務組合變得容易。您可以使用這些實用程序有效地使用對象存儲,對筆記本進行鏈和參數化,並處理秘密。dbutils
在筆記本之外不支持。
重要的
調用dbutils
執行程序內部可能產生意想不到的結果。以了解更多有關的限製dbutils
還有其他可以替代的方法,見限製.
dbutils
實用程序在Python、R和Scala筆記本中可用。
公用事業公司:憑證,數據,fs,圖書館,筆記本,秘密,小部件,實用程序API庫
列出可用的公用事業公司
若要列出可用的實用程序以及每個實用程序的簡短說明,請運行dbutils.help ()
對於Python或Scala。
本示例列出了Databricks實用程序的可用命令。
dbutils.幫助()
dbutils.幫助()
這個模塊為用戶提供了各種實用工具,以與Databricks的其餘部分進行交互。用於在筆記本中與憑證交互的實用程序fs: DbfsUtils ->從控製台庫操作Databricks文件係統(DBFS): LibraryUtils ->用於會話隔離庫的實用程序notebook: NotebookUtils ->用於筆記本控製流的實用程序(EXPERIMENTAL) secrets: SecretUtils ->提供在筆記本小部件中利用秘密的實用程序:在筆記本中創建和獲取輸入小部件綁定值的方法
列出實用程序的可用命令
若要列出實用程序的可用命令以及每個命令的簡短描述,請運行.help ()
在實用程序的編程名稱之後。
這個示例列出了Databricks文件係統(DBFS)實用程序的可用命令。
dbutils.fs.幫助()
dbutils.fs.help()
dbutils.fs.幫助()
dbutils。fsprovides utilities for working with FileSystems. Most methods in this package can take either a DBFS path (e.g., "/foo" or "dbfs:/foo"), or another FileSystem URI. For more info about a method, use dbutils.fs.help("methodName"). In notebooks, you can also use the %fs shorthand to access DBFS. The %fs shorthand maps straightforwardly onto dbutils calls. For example, "%fs head --maxBytes=10000 /file/path" translates into "dbutils.fs.head("/file/path", maxBytes = 10000)". fsutils cp(from: String, to: String, recurse: boolean = false): boolean -> Copies a file or directory, possibly across FileSystems head(file: String, maxBytes: int = 65536): String -> Returns up to the first 'maxBytes' bytes of the given file as a String encoded in UTF-8 ls(dir: String): Seq -> Lists the contents of a directory mkdirs(dir: String): boolean -> Creates the given directory if it does not exist, also creating any necessary parent directories mv(from: String, to: String, recurse: boolean = false): boolean -> Moves a file or directory, possibly across FileSystems put(file: String, contents: String, overwrite: boolean = false): boolean -> Writes the given String out to a file, encoded in UTF-8 rm(dir: String, recurse: boolean = false): boolean -> Removes a file or directory mount mount(source: String, mountPoint: String, encryptionType: String = "", owner: String = null, extraConfigs: Map = Map.empty[String, String]): boolean -> Mounts the given source directory into DBFS at the given mount point mounts: Seq -> Displays information about what is mounted within DBFS refreshMounts: boolean -> Forces all machines in this cluster to refresh their mount cache, ensuring they receive the most recent information unmount(mountPoint: String): boolean -> Deletes a DBFS mount point updateMount(source: String, mountPoint: String, encryptionType: String = "", owner: String = null, extraConfigs: Map = Map.empty[String, String]): boolean -> Similar to mount(), but updates an existing mount point instead of creating a new one
顯示命令的幫助
需要顯示命令的幫助信息,使用命令.help(“<命令名>”)
在命令名稱後。
這個例子顯示了對DBFS拷貝命令的幫助。
dbutils.fs.幫助(“cp”)
dbutils.fs.help(“cp”)
dbutils.fs.幫助(“cp”)
/** *複製文件或目錄,可能跨文件係統。* *示例:cp("/mnt/my-folder/a", "dbfs://a/b") * * @param from源文件或目錄的文件係統URI * @param to目標文件或目錄的文件係統URI * @param recurse如果為true,則遞歸複製所有文件和目錄* @return true如果所有文件都成功複製*/ cp(from: java.lang.目錄)字符串,:. lang。字符串,recurse: boolean = false): boolean
證書效用(dbutils.credentials)
命令:assumeRole,showCurrentRole,showRoles
憑證實用程序允許您與筆記本中的憑證交互。此實用程序僅在具有的集群上可用憑據透傳啟用。執行命令,列出可用的命令dbutils.credentials.help ()
.
gauserole (role: String): boolean ->設置使用S3尋找憑據進行認證時所承擔的角色ARN。showCurrentRole: List ->顯示當前設置的角色。showRoles: List ->顯示可能假定的角色集合
assumeRole命令(dbutils.credentials.assumeRole)
為AWS身份和訪問管理(IAM)角色設置Amazon資源名(ARN),以便在尋找使用Amazon S3進行身份驗證的憑據時使用。執行該命令後,可以執行S3訪問命令,例如sc.textFile(“s3a: / /桶/ my-file.csv”)
訪問一個對象。
要顯示該命令的幫助信息,請執行命令dbutils.credentials.help(“assumeRole”)
.
dbutils.憑證.assumeRole(“攻擊:aws:我::123456789012:角色/我的角色”)#[1]:真的
dbutils.credentials.assumeRole(“攻擊:aws:我::123456789012:角色/我的角色”)#真正的
dbutils.憑證.assumeRole(“攻擊:aws:我::123456789012:角色/我的角色”)// res0: Boolean = true
showCurrentRole命令(dbutils.credentials.showCurrentRole)
列出當前設置的AWS IAM (Identity and Access Management)角色。
要顯示該命令的幫助信息,請執行命令dbutils.credentials.help(“showCurrentRole”)
.
dbutils.憑證.showCurrentRole()#[1]:['攻擊:aws:我::123456789012:角色/ my-role-a ')
dbutils.credentials.showCurrentRole()# ([1])#[1]”是:aws:我::123456789012:角色/ my-role-a”
dbutils.憑證.showCurrentRole()/ / res0: java.util。列表[String] =[攻擊:aws:我::123456789012:角色/ my-role-a]
showRoles命令(dbutils.credentials.showRoles)
列出可能假定的AWS身份和訪問管理(IAM)角色的集合。
要顯示該命令的幫助信息,請執行命令dbutils.credentials.help(“showRoles”)
.
dbutils.憑證.showRoles()# Out[1]: ['arn:aws:iam::123456789012:role/my-role-a', 'arn:aws:iam::123456789012:role/my-role-b']
dbutils.credentials.showRoles()# ([1])#[1]”是:aws:我::123456789012:角色/ my-role-a”## [[2]]#[1]”是:aws:我::123456789012:角色/ my-role-b”
dbutils.憑證.showRoles()/ / res0: java.util。List[String] = [arn:aws:iam::123456789012:role/my-role-a, arn:aws:iam::123456789012:role/my-role-b]
數據效用(dbutils.data)
預覽
此功能已在公共預覽.
請注意
在Databricks Runtime 9.0及以上版本中可用。
命令:總結
數據實用程序允許您理解和解釋數據集。執行命令,列出可用的命令dbutils.data.help ()
.
dbutils。數據provides utilities for understanding and interpreting datasets. This module is currently in preview and may be unstable. For more info about a method, use dbutils.data.help("methodName"). summarize(df: Object, precise: boolean): void -> Summarize a Spark DataFrame and visualize the statistics to get quick insights
總結命令(dbutils.data.summarize)
計算並顯示Apache Spark DataFrame或pandas的彙總統計信息。該命令可用於Python、Scala和R。
要顯示該命令的幫助信息,請執行命令dbutils.data.help(“總結”)
.
在Databricks Runtime 10.1及以上版本中,您可以使用附加的精確的
參數調整計算統計信息的精度。
請注意
此功能已在公共預覽.
當
精確的
設置為false(默認值)時,一些返回的統計信息包括近似值,以減少運行時間。類別列的不同值的數目對於高基數列可能有~5%的相對誤差。
當不同值的數量大於10000時,頻繁值計數可能有高達0.01%的誤差。
相對於總行數,直方圖和百分位估計的誤差可能高達0.01%。
當
精確的
設置為true時,統計數據計算精度更高。除了直方圖和數字列的百分位數外,所有的統計數據現在都是精確的。相對於總行數,直方圖和百分位估計的誤差可能高達0.0001%。
數據摘要輸出頂部的工具提示指示當前運行的模式。
此示例顯示默認啟用近似值的Apache Spark DataFrame的彙總統計信息。要查看結果,在筆記本上運行此命令。本例是基於樣本數據集(databricks-datasets).
df=火花.讀.格式(“csv”).負載(' / databricks-datasets / Rdatasets /數據- 001 / csv / ggplot2 / diamonds.csv ',頭=真正的,inferSchema=真正的)dbutils.數據.總結(df)
df<-read.df(“/ databricks-datasets / Rdatasets /數據- 001 / csv / ggplot2 / diamonds.csv”,源=“csv”,頭=“真正的”,inferSchema=“真正的”)dbutils.data.summarize(df)
瓦爾df=火花.讀.格式(“csv”).選項(“inferSchema”,“真正的”).選項(“頭”,“真正的”).負載(“/ databricks-datasets / Rdatasets /數據- 001 / csv / ggplot2 / diamonds.csv”)dbutils.數據.總結(df)
注意,可視化使用如果符號簡潔地呈現小於0.01或大於10000的數值。以數值為例1.25 e15汽油
將呈現為1.25度
.一個例外:可視化使用“B
”1.0 e9
(giga)而不是“G
”。
文件係統實用程序
命令:cp,頭,ls,mkdir,山,掛載,mv,把,refreshMounts,rm,卸載,updateMount
文件係統實用程序允許您訪問數據庫文件係統(DBFS),使得Databricks作為文件係統更容易使用。執行命令,列出可用的命令dbutils.fs.help ()
.
dbutils。fsprovides utilities for working with FileSystems. Most methods in this package can take either a DBFS path (e.g., "/foo" or "dbfs:/foo"), or another FileSystem URI. For more info about a method, use dbutils.fs.help("methodName"). In notebooks, you can also use the %fs shorthand to access DBFS. The %fs shorthand maps straightforwardly onto dbutils calls. For example, "%fs head --maxBytes=10000 /file/path" translates into "dbutils.fs.head("/file/path", maxBytes = 10000)". fsutils cp(from: String, to: String, recurse: boolean = false): boolean -> Copies a file or directory, possibly across FileSystems head(file: String, maxBytes: int = 65536): String -> Returns up to the first 'maxBytes' bytes of the given file as a String encoded in UTF-8 ls(dir: String): Seq -> Lists the contents of a directory mkdirs(dir: String): boolean -> Creates the given directory if it does not exist, also creating any necessary parent directories mv(from: String, to: String, recurse: boolean = false): boolean -> Moves a file or directory, possibly across FileSystems put(file: String, contents: String, overwrite: boolean = false): boolean -> Writes the given String out to a file, encoded in UTF-8 rm(dir: String, recurse: boolean = false): boolean -> Removes a file or directory mount mount(source: String, mountPoint: String, encryptionType: String = "", owner: String = null, extraConfigs: Map = Map.empty[String, String]): boolean -> Mounts the given source directory into DBFS at the given mount point mounts: Seq -> Displays information about what is mounted within DBFS refreshMounts: boolean -> Forces all machines in this cluster to refresh their mount cache, ensuring they receive the most recent information unmount(mountPoint: String): boolean -> Deletes a DBFS mount point updateMount(source: String, mountPoint: String, encryptionType: String = "", owner: String = null, extraConfigs: Map = Map.empty[String, String]): boolean -> Similar to mount(), but updates an existing mount point instead of creating a new one
cp命令(dbutils.fs.cp)
複製文件或目錄(可能跨文件係統)。
要顯示該命令的幫助信息,請執行命令dbutils.fs.help (cp)
.
此示例複製命名的文件old_file.txt
從/ FileStore
來/ tmp /新
,將複製的文件重命名為new_file.txt
.
dbutils.fs.cp(“/ FileStore / old_file.txt”,“/ tmp /新/ new_file.txt”)#[4]:真的
dbutils.fs.cp(“/ FileStore / old_file.txt”,“/ tmp /新/ new_file.txt”)# [1]
dbutils.fs.cp(“/ FileStore / old_file.txt”,“/ tmp /新/ new_file.txt”)// res3: Boolean = true
頭命令(dbutils.fs.head)
返回給定文件的最多指定的最大字節數。字節作為UTF-8編碼的字符串返回。
要顯示該命令的幫助信息,請執行命令dbutils.fs.help(“頭”)
.
此示例顯示文件的前25個字節my_file.txt
位於/ tmp
.
dbutils.fs.頭(“/ tmp / my_file.txt”,25)#[被截斷到前25個字節]# Out[12]: 'Apache Spark太棒了!\ n”
dbutils.fs.head(“/ tmp / my_file.txt”,25)Apache Spark太棒了!\ n”
dbutils.fs.頭(“/ tmp / my_file.txt”,25)//[被截斷到前25字節]// res4: String =// "Apache Spark太棒了!/ /”
ls命令(dbutils.fs.ls)
列出目錄的內容。
要顯示該命令的幫助信息,請執行命令dbutils.fs.help(“ls”)
.
的內容的信息/ tmp
.的modificationTime
字段在Databricks Runtime 10.2及以上版本中可用。在R,modificationTime
作為字符串返回。
dbutils.fs.ls(“/ tmp”)# Out[13]: [FileInfo(path='dbfs:/tmp/my_file.txt', name='my_file.txt', size=40, modificationTime=1622054945000)]
dbutils.fs.ls(“/ tmp”)#為了從dbutls .fs.ls()獲得更漂亮的結果,請使用' %fs ls ' # ([1])#美元[[1]]的道路#[1]”dbfs: / tmp / my_file.txt”#美元[[1]]的名字#[1]“my_file.txt”#美元[[1]]的大小40 # [1]# isDir美元[[1]]#[1]假# isFile美元[[1]]# [1]# modificationTime美元[[1]]#[1]“1622054945000”
dbutils.fs.ls(“/ tmp”)/ / res6: Seq [com.databricks.backend.daemon.dbutils。FileInfo] = WrappedArray(FileInfo(dbfs:/tmp/my_file.txt, my_file.txt, 40,1622054945000))
mkdir命令(dbutils.fs.mkdirs)
如果給定目錄不存在,則創建該目錄。還可以創建任何必要的父目錄。
要顯示該命令的幫助信息,請執行命令dbutils.fs.help (mkdir)
.
本示例創建目錄結構/父母/孩子/孫子
在/ tmp
.
dbutils.fs.mkdir(“/ tmp /父母/孩子/孫子”)#[15]:真的
dbutils.fs.mkdirs(“/ tmp /父母/孩子/孫子”)# [1]
dbutils.fs.mkdir(“/ tmp /父母/孩子/孫子”)// res7: Boolean = true
mount命令(dbutils.fs.mount)
在指定的掛載點將指定的源目錄掛載到DBFS中。
要顯示該命令的幫助信息,請執行命令dbutils.fs.help(“山”)
.
aws_bucket_name=“我的桶”mount_name=“s3-my-bucket”dbutils.fs.山(“s3a: / /% s"%aws_bucket_name,“/ mnt /% s"%mount_name)
瓦爾AwsBucketName=“我的桶”瓦爾MountName=“s3-my-bucket”dbutils.fs.山(“s3a: / /$AwsBucketName",“/ mnt /$MountName")
有關其他代碼示例,請參見Amazon S3.
坐騎命令(dbutils.fs.mounts)
顯示有關DBFS中當前掛載的內容的信息。
要顯示該命令的幫助信息,請執行命令dbutils.fs.help(“坐騎”)
.
dbutils.fs.掛載()# Out[11]: [MountInfo(mountPoint='/mnt/databricks-results', source='databricks-results', encryptionType=' ses -s3')]
dbutils.fs.掛載()
有關其他代碼示例,請參見Amazon S3.
mv命令(dbutils.fs.mv)
移動文件或目錄,可能跨文件係統。移動是複製後的刪除,即使是文件係統中的移動也是如此。
要顯示該命令的幫助信息,請執行命令dbutils.fs.help(“mv”)
.
這個示例移動文件my_file.txt
從/ FileStore
來/ tmp /父母/孩子/ granchild
.
dbutils.fs.mv(“/ FileStore / my_file.txt”,“/ tmp /父母/孩子/孫子”)#[2]:真的
dbutils.fs.mv(“/ FileStore / my_file.txt”,“/ tmp /父母/孩子/孫子”)# [1]
dbutils.fs.mv(“/ FileStore / my_file.txt”,“/ tmp /父母/孩子/孫子”)// res1: Boolean = true
把命令(dbutils.fs.put)
將指定的字符串寫入文件。該字符串是UTF-8編碼的。
要顯示該命令的幫助信息,請執行命令dbutils.fs.help(“”)
.
這個示例寫入字符串你好,磚!
到一個名為hello_db.txt
在/ tmp
.如果文件存在,它將被覆蓋。
dbutils.fs.把(“/ tmp / hello_db.txt”,“你好,磚!”,真正的)寫了18字節。#[6]:真的
dbutils.fs.put(“/ tmp / hello_db.txt”,“你好,磚!”,真正的)# [1]
dbutils.fs.把(“/ tmp / hello_db.txt”,“你好,磚!”,真正的)//寫了18字節。// res2: Boolean = true
refreshMounts命令(dbutils.fs.refreshMounts)
強製集群中的所有機器刷新它們的掛載緩存,確保它們接收到最新的信息。
要顯示該命令的幫助信息,請執行命令dbutils.fs.help(“refreshMounts”)
.
dbutils.fs.refreshMounts()
dbutils.fs.refreshMounts()
有關其他代碼示例,請參見Amazon S3.
rm命令(dbutils.fs.rm)
刪除文件或目錄。
要顯示該命令的幫助信息,請執行命令dbutils.fs.help(“rm”)
.
此示例刪除指定的文件hello_db.txt
在/ tmp
.
dbutils.fs.rm(“/ tmp / hello_db.txt”)#[8]:真的
dbutils.fs.rm(“/ tmp / hello_db.txt”)# [1]
dbutils.fs.rm(“/ tmp / hello_db.txt”)// res6: Boolean = true
卸載命令(dbutils.fs.unmount)
刪除DBFS掛載點。
要顯示該命令的幫助信息,請執行命令dbutils.fs.help(“卸載”)
.
dbutils.fs.卸載(“/ mnt / < mount-name >”)
有關其他代碼示例,請參見Amazon S3.
updateMount命令(dbutils.fs.updateMount)
類似於dbutils.fs.mount
命令,但是更新現有的掛載點,而不是創建一個新的掛載點。如果掛載點不存在,則返回錯誤。
要顯示該命令的幫助信息,請執行命令dbutils.fs.help(“updateMount”)
.
該命令在Databricks Runtime 10.2及以上版本中可用。
aws_bucket_name=“我的桶”mount_name=“s3-my-bucket”dbutils.fs.updateMount(“s3a: / /% s"%aws_bucket_name,“/ mnt /% s"%mount_name)
瓦爾AwsBucketName=“我的桶”瓦爾MountName=“s3-my-bucket”dbutils.fs.updateMount(“s3a: / /$AwsBucketName",“/ mnt /$MountName")
庫工具(dbutils.library)
請注意
庫實用程序已棄用。
命令:安裝,installPyPI,列表,restartPython,updateCondaEnv
庫實用程序允許您安裝Python庫並創建一個範圍為筆記本會話的環境。這些庫在驅動程序和執行程序上都可用,因此可以在用戶定義的函數中引用它們。這使得:
要在筆記本本身內組織的筆記本的庫依賴項。
具有不同庫依賴關係的筆記本用戶可以不受幹擾地共享集群。
分離一個筆記本會破壞這種環境。但是,您可以通過重新運行庫來重新創建它安裝
筆記本中的API命令。看到restartPython
如何重置筆記本狀態而不丟失環境的API。
重要的
庫實用程序在Databricks Runtime ML或Databricks Runtime for Genomics上不可用。相反,看到Notebook-scoped Python庫.
對於Databricks Runtime 7.2及以上版本,Databricks建議使用%皮普
安裝筆記本作用域庫的魔術命令。看到Notebook-scoped Python庫.
默認情況下,庫實用程序是啟用的。因此,默認情況下,每個筆記本的Python環境是通過使用單獨的Python可執行文件來隔離的,該可執行文件是在將筆記本附加到集群上並繼承集群上的默認Python環境時創建的。通過init腳本進入Databricks Python環境仍然可用。您可以通過設置禁用此功能spark.databricks.libraryIsolation.enabled
來假
.
該API與現有的集群範圍庫安裝兼容用戶界麵而且REST API.通過此API安裝的庫具有更高的優先級高於集群範圍的庫。
執行命令,列出可用的命令dbutils.library.help ()
.
安裝當前筆記本會話內的庫installPyPI(pypiPackage: String, version: String = "", repo: String = "", extras: String = ""): boolean ->安裝當前筆記本會話內的PyPI庫列表:list ->列出通過dbutils restartPython: void ->為當前筆記本會話重新啟動python進程updateCondaEnv(envYmlContent: String):基於environment的規範(內容)更新當前筆記本的Conda環境
安裝命令(dbutils.library.install)
給定庫的路徑,在當前筆記本會話中安裝該庫。通過調用此命令安裝的庫僅對當前筆記本可用。
要顯示該命令的幫助信息,請執行命令dbutils.library.help(“安裝”)
.
此示例安裝一個.egg
或.whl
筆記本裏的圖書館。
重要的
dbutils.library.install
在Databricks Runtime 11.0及以上版本中刪除。
Databricks建議您將所有庫安裝命令放在筆記本的第一個單元格中並調用restartPython
在那個牢房的盡頭。Python筆記本運行後會重置狀態restartPython
;筆記本失去所有狀態,包括但不限於本地變量、導入的庫和其他臨時狀態。因此,我們建議您安裝庫並在第一個筆記本電池。
公認的圖書館資源是dbfs
而且s3
.
dbutils.圖書館.安裝(“dbfs: /道路/ /你/ library.egg”)dbutils.圖書館.restartPython()#移除Python狀態,但有些庫不調用此命令可能無法工作。
dbutils.圖書館.安裝(“dbfs: /道路/ /你/ library.whl”)dbutils.圖書館.restartPython()#移除Python狀態,但有些庫不調用此命令可能無法工作。
請注意
您可以直接安裝自定義車輪文件使用%皮普
.在下麵的例子中,我們假設你已經上傳了你的庫輪文件到DBFS:
%皮普安裝/dbfs/路徑/來/你的/圖書館.whl
pip不支持Egg文件,wheel被認為是Python構建和二進製打包的標準。看到輪與蛋為更多的細節。但是,如果您希望以一種與。兼容的方式使用egg文件%皮普
,你可以使用以下解決方案:
#此步驟僅在尚未運行任何%pip命令時才需要。#它將觸發設置獨立的筆記本環境%皮普安裝<任何-自由>#這並不需要是一個真正的庫;例如“%pip install any-lib”就可以工作
進口sys假設前麵的步驟已經完成,下麵的命令#將egg文件添加到當前筆記本環境中sys.路徑.附加(“/地方/道路/ / library.egg”)
installPyPI命令(dbutils.library.installPyPI)
給定一個Python包索引(PyPI)包,在當前筆記本會話中安裝該包。通過調用此命令安裝的庫在筆記本之間是隔離的。
要顯示該命令的幫助信息,請執行命令dbutils.library.help(“installPyPI”)
.
這個示例在筆記本電腦中安裝一個PyPI包。版本
,回購
,臨時演員
是可選的。使用臨時演員
參數來指定額外的功能(額外的需求)。
dbutils.圖書館.installPyPI(“pypipackage”,版本=“版本”,回購=“回購”,臨時演員=“臨時演員”)dbutils.圖書館.restartPython()#移除Python狀態,但有些庫不調用此命令可能無法工作。
重要的
dbutils.library.installPyPI
在Databricks Runtime 11.0及以上版本中刪除。
的版本
而且臨時演員
key不能是PyPI包字符串的一部分。例如:dbutils.library.installPyPI(“azureml-sdk(磚)= = 1.19.0”)
不是有效的。使用版本
而且臨時演員
參數指定版本和附加信息,如下所示:
dbutils.圖書館.installPyPI(“azureml-sdk”,版本=“1.19.0”,臨時演員=“磚”)dbutils.圖書館.restartPython()#移除Python狀態,但有些庫不調用此命令可能無法工作。
請注意
當更換dbutils.library.installPyPI
命令與%皮普
命令時,會自動重新啟動Python解釋器。可以執行如下命令:
%皮普安裝azureml-sdk[磚]= =1.19.0
此示例在一個筆記本中指定庫需求,並使用運行%
在另一個。為此,首先定義要安裝在筆記本中的庫。本例使用了一個名為InstallDependencies
.
dbutils.圖書館.installPyPI(“火炬”)dbutils.圖書館.installPyPI(“scikit-learn”,版本=“1.19.1”)dbutils.圖書館.installPyPI(“azureml-sdk”,臨時演員=“磚”)dbutils.圖書館.restartPython()#移除Python狀態,但有些庫不調用此命令可能無法工作。
然後將它們安裝到需要這些依賴項的筆記本中。
% /路徑/ / InstallDependencies運行#在第一個單元格中安裝依賴項
進口火炬從sklearn.linear_model進口LinearRegression進口azureml...
這個示例在維護環境的同時重置Python筆記本狀態。這種技術隻在Python筆記本中可用。例如,您可以使用此技術重新加載預安裝在不同版本的庫Databricks:
dbutils.圖書館.installPyPI(“numpy”,版本=“1.15.4”)dbutils.圖書館.restartPython()
#確保您開始使用另一個單元格中的庫。進口numpy
你也可以使用這個技術來安裝像tensorflow這樣需要在進程啟動時加載的庫:
dbutils.圖書館.installPyPI(“tensorflow”)dbutils.圖書館.restartPython()
#使用另一個單元格中的庫。進口tensorflow
命令列表(dbutils.library.list)
列出通過庫實用程序為當前筆記本會話添加的獨立庫。這並不包括附加到集群的庫。
要顯示該命令的幫助信息,請執行命令dbutils.library.help(“列表”)
.
本示例列出了安裝在筆記本中的庫。
dbutils.圖書館.列表()
請注意
相當於此命令使用%皮普
是:
%皮普凍結
筆記本效用(dbutils.notebook)
筆記本實用程序允許您將筆記本連接在一起,並根據它們的結果進行操作。看到筆記本的工作流.
執行命令,列出可用的命令dbutils.notebook.help ()
.
這個方法讓你退出一個值為run(path: String, timeoutSeconds: int, arguments: Map)的筆記本電腦:String ->這個方法運行一個筆記本電腦並返回它的退出值。
退出命令(dbutils.notebook.exit)
退出帶有值的筆記本。
要顯示該命令的幫助信息,請執行命令dbutils.notebook.help(“退出”)
.
此示例退出帶有該值的筆記本退出從我的其他筆記本
.
dbutils.筆記本.退出(“從我的另一個筆記本退出”)#筆記本退出:退出我的另一個筆記本
dbutils.notebook.exit(“從我的另一個筆記本退出”)#筆記本退出:退出我的另一個筆記本
dbutils.筆記本.退出(“從我的另一個筆記本退出”)//筆記本退出:退出我的另一個筆記本
運行命令(dbutils.notebook.run)
運行一個筆記本電腦並返回它的退出值。默認情況下,筆記本將在當前集群中運行。
請注意
對象返回的字符串值的最大長度運行
命令為5 MB獲取單次運行的輸出(得到/ /運行/輸出工作
).
要顯示該命令的幫助信息,請執行命令dbutils.notebook.help(“運行”)
.
此示例運行一個名為我的其他筆記本
和打電話的筆記本在同一個位置。所謂的notebook以代碼行結束dbutils.notebook.exit(“退出從我的其他筆記本”)
.如果被調用的筆記本沒有在60秒內完成運行,則拋出異常。
dbutils.筆記本.運行(“我的其他筆記本”,60)#退出[14]:“退出我的另一個筆記本”
dbutils.筆記本.運行(“我的其他筆記本”,60)// res2: String =退出我的其他筆記本
秘密效用(dbutils.secrets)
命令:得到,getBytes,列表,listScopes
secrets實用程序允許您存儲和訪問敏感的憑據信息,而不使它們在筆記本中可見。看到保密管理而且使用筆記本上的秘密.執行命令,列出可用的命令dbutils.secrets.help ()
.
getBytes(scope: String, key: String): byte[] ->獲取帶範圍和鍵的秘密值的字節表示形式,帶範圍和鍵列表(scope: String): Seq ->列出範圍內秘密的秘密元數據listScopes: Seq ->列出秘密範圍
得到命令(dbutils.secrets.get)
獲取指定秘密範圍和鍵的秘密值的字符串表示形式。
要顯示該命令的幫助信息,請執行命令dbutils.secrets.help(“”)
.
此示例獲取命名範圍的秘密值的字符串表示形式我的領域
鍵名為我的鑰匙
.
dbutils.秘密.得到(範圍=“我的領域”,關鍵=“我的鑰匙”)#[14]:“[編輯]”
dbutils.secrets.get(範圍=“我的領域”,關鍵=“我的鑰匙”)#[1]”(修訂)”
dbutils.秘密.得到(範圍=“我的領域”,關鍵=“我的鑰匙”)// res0: String = [REDACTED]
getBytes命令(dbutils.secrets.getBytes)
獲取指定範圍和鍵的秘密值的字節表示形式。
要顯示該命令的幫助信息,請執行命令dbutils.secrets.help(“getBytes”)
.
這個例子獲取了secret值(a1 !b2@c3 #
)為命名的作用域我的領域
鍵名為我的鑰匙
.
my_secret=dbutils.秘密.getBytes(範圍=“我的領域”,關鍵=“我的鑰匙”)my_secret.解碼(“utf - 8”)#[1]:“a1 !b2@c3 #”
my_secret=dbutils.secrets.getBytes(範圍=“我的領域”,關鍵=“我的鑰匙”)打印(rawToChar(my_secret))#[1]“a1 !b2@c3 #”
瓦爾mySecret=dbutils.秘密.getBytes(範圍=“我的領域”,關鍵=“我的鑰匙”)瓦爾convertedString=新字符串(mySecret)println(convertedString)/ / a1 !b2@c3 #// mySecret: Array[Byte] = Array(97, 49, 33, 98, 50, 64, 99, 51, 35)// convertedString: String = a1!b2@c3 #
命令列表(dbutils.secrets.list)
列出指定範圍內機密的元數據。
要顯示該命令的幫助信息,請執行命令dbutils.secrets.help(“列表”)
.
此示例列出了命名範圍內機密的元數據我的領域
.
dbutils.秘密.列表(“我的領域”)# [10]: [SecretMetadata(關鍵= '我的鑰匙'))
dbutils.secrets.list(“我的領域”)# ([1])#美元[[1]]鍵#[1]“我的鑰匙”
dbutils.秘密.列表(“我的領域”)/ /它:Seq [com.databricks.dbutils_v1。SecretMetadata] = ArrayBuffer (SecretMetadata(鑰匙)
listScopes命令(dbutils.secrets.listScopes)
列出可用的範圍。
要顯示該命令的幫助信息,請執行命令dbutils.secrets.help(“listScopes”)
.
本示例列出了可用的作用域。
dbutils.秘密.listScopes()# [14]: [SecretScope (name = '我的領域'))
dbutils.secrets.listScopes()# ([1])#美元[[1]]的名字#[1]“我的領域”
dbutils.秘密.listScopes()/ / res3: Seq [com.databricks.dbutils_v1。SecretScope] = ArrayBuffer (SecretScope(我的領域)
widget工具(dbutils.widgets)
命令:組合框,下拉,得到,getArgument,多選,刪除,removeAll,文本
小部件實用程序允許您參數化筆記本。看到磚小部件.
執行命令,列出可用的命令dbutils.widgets.help ()
.
創建一個有給定名稱、默認值和選項的組合框輸入小部件(name: String, defaultValue: String, choices: Seq, label: String): void ->創建一個有給定名稱、默認值和選項的下拉輸入小部件a get(name: String): String ->檢索輸入小部件的當前值getArgument(name: String,可選:String): String -> (DEPRECATED)等價於get multiselect(name: String,可選:String):String, defaultValue: String, choices: Seq, label: String): void ->創建一個具有給定名稱、默認值和選項的多選擇輸入小部件remove(name: String): void ->從筆記本中刪除一個輸入小部件removeAll: void ->刪除筆記本文本中的所有小部件(name: String, defaultValue: String, label: String): void ->創建一個具有給定名稱和默認值的文本輸入小部件
組合框命令(dbutils.widgets.combobox)
創建並顯示具有指定編程名稱、默認值、選項和可選標簽的組合框小部件。
要顯示該命令的幫助信息,請執行命令dbutils.widgets.help(組合框)
.
此示例創建並顯示一個具有編程名稱的組合框小部件fruits_combobox
.它提供了多種選擇蘋果
,香蕉
,椰子
,龍水果
的初始值香蕉
.這個組合框小部件有一個附帶的標簽水果
.這個例子以打印組合框小部件的初始值結束,香蕉
.
dbutils.小部件.組合框(的名字=“fruits_combobox”,defaultValue=“香蕉”,選擇=[“蘋果”,“香蕉”,“椰子”,“龍水果”],標簽=“水果”)打印(dbutils.小部件.得到(“fruits_combobox”))#香蕉
dbutils.widgets.combobox(的名字=“fruits_combobox”,defaultValue=“香蕉”,選擇=列表(“蘋果”,“香蕉”,“椰子”,“龍水果”),標簽=“水果”)打印(dbutils.widgets.get(“fruits_combobox”))#[1]“香蕉”
dbutils.小部件.組合框(“fruits_combobox”,“香蕉”,數組(“蘋果”,“香蕉”,“椰子”,“龍水果”),“水果”)打印(dbutils.小部件.得到(“fruits_combobox”))/ /香蕉
下拉菜單命令(dbutils.widgets.dropdown)
創建並顯示具有指定編程名稱、默認值、選項和可選標簽的下拉小部件。
要顯示該命令的幫助信息,請執行命令dbutils.widgets.help(下拉)
.
此示例創建並顯示一個具有編程式名稱的下拉小部件toys_dropdown
.它提供了多種選擇字母塊
,籃球
,角
,娃娃
的初始值籃球
.這個下拉小部件有一個附帶的標簽玩具
.本例以打印下拉小部件的初始值結束,籃球
.
dbutils.小部件.下拉(的名字=“toys_dropdown”,defaultValue=“籃球”,選擇=[“字母積木”,“籃球”,“角”,“娃娃”],標簽=“玩具”)打印(dbutils.小部件.得到(“toys_dropdown”))#籃球
dbutils.widgets.dropdown(的名字=“toys_dropdown”,defaultValue=“籃球”,選擇=列表(“字母積木”,“籃球”,“角”,“娃娃”),標簽=“玩具”)打印(dbutils.widgets.get(“toys_dropdown”))#[1]“籃球”
dbutils.小部件.下拉(“toys_dropdown”,“籃球”,數組(“字母積木”,“籃球”,“角”,“娃娃”),“玩具”)打印(dbutils.小部件.得到(“toys_dropdown”))/ /籃球
得到命令(dbutils.widgets.get)
獲取具有指定編程名稱的小部件的當前值。這個程序名稱可以是:
例如,筆記本中自定義小部件的名稱
fruits_combobox
或toys_dropdown
.例如,作為筆記本任務的一部分傳遞給筆記本的自定義參數的名稱
的名字
或年齡
.有關更多信息,請參閱中筆記本任務的參數覆蓋創建一個工作UI或notebook_params
字段觸發一個新的作業運行(帖子/工作/運行
)操作。
要顯示該命令的幫助信息,請執行命令dbutils.widgets.help(“”)
.
此示例獲取具有編程式名稱的小部件的值fruits_combobox
.
dbutils.小部件.得到(“fruits_combobox”)#香蕉
dbutils.widgets.get(“fruits_combobox”)#[1]“香蕉”
dbutils.小部件.得到(“fruits_combobox”)// res6: String = banana . //
此示例獲取具有編程名稱的筆記本任務參數的值年齡
.此參數設置為35
當運行相關的筆記本任務時。
dbutils.小部件.得到(“年齡”)# 35
dbutils.widgets.get(“年齡”)#[1]“35”
dbutils.小部件.得到(“年齡”)// res6: String = 35
getArgument命令(dbutils.widgets.getArgument)
獲取具有指定編程名稱的小部件的當前值。如果小部件不存在,則可以返回一條可選消息。
請注意
該命令已棄用。使用dbutils.widgets.get代替。
要顯示該命令的幫助信息,請執行命令dbutils.widgets.help(“getArgument”)
.
此示例獲取具有編程式名稱的小部件的值fruits_combobox
.如果此小部件不存在,則消息錯誤:不能找到水果組合框
返回。
dbutils.小部件.getArgument(“fruits_combobox”,“錯誤:找不到水果組合框”)使用dbutls .widgets.text()或dbutls .widgets.dropdown()創建小部件,使用dbutls .widgets.get()獲取其綁定值。#[3]:“香蕉”
dbutils.widgets.getArgument(“fruits_combobox”,“錯誤:找不到水果組合框”)使用dbutls .widgets.text()或dbutls .widgets.dropdown()創建小部件,使用dbutls .widgets.get()獲取其綁定值。#[1]“香蕉”
dbutils.小部件.getArgument(“fruits_combobox”,"錯誤:找不到水果組合框")// command-1234567890123456:1:警告:trait WidgetsUtils中的getArgument方法已被棄用:使用dbutls .widgets.text()或dbutls .widgets.dropdown()創建一個小部件,使用dbutls .widgets.get()獲取它的綁定值。/ / dbutils.widgets。getArgument(“fruits_combobox”,"錯誤:找不到水果組合框")/ / ^// res7: String = banana . //
多選命令(dbutils.widgets.multiselect)
創建並顯示具有指定編程名稱、默認值、選項和可選標簽的多選擇小部件。
要顯示該命令的幫助信息,請執行命令dbutils.widgets.help(多選)
.
此示例創建並顯示具有編程式名稱的多選擇小部件days_multiselect
.它提供了多種選擇周一
通過周日
的初始值周二
.這個多選擇小部件有一個附帶的標簽天的的周
.這個例子以打印multiselect小部件的初始值結束,周二
.
dbutils.小部件.多選(的名字=“days_multiselect”,defaultValue=“星期二”,選擇=[“周一”,“星期二”,“星期三”,“星期四”,“星期五”,“星期六”,“星期天”],標簽=《每周的日子》)打印(dbutils.小部件.得到(“days_multiselect”))#周二
dbutils.widgets.multiselect(的名字=“days_multiselect”,defaultValue=“星期二”,選擇=列表(“周一”,“星期二”,“星期三”,“星期四”,“星期五”,“星期六”,“星期天”),標簽=《每周的日子》)打印(dbutils.widgets.get(“days_multiselect”))#[1]“周二”
dbutils.小部件.多選(“days_multiselect”,“星期二”,數組(“周一”,“星期二”,“星期三”,“星期四”,“星期五”,“星期六”,“星期天”),《每周的日子》)打印(dbutils.小部件.得到(“days_multiselect”))/ /日
刪除命令(dbutils.widgets.remove)
刪除具有指定編程名稱的小部件。
要顯示該命令的幫助信息,請執行命令dbutils.widgets.help(“刪除”)
.
重要的
如果添加了刪除小部件的命令,則不能添加後續命令在同一單元格中創建小部件。您必須在另一個單元格中創建小部件。
此示例刪除具有編程式名稱的小部件fruits_combobox
.
dbutils.小部件.刪除(“fruits_combobox”)
dbutils.widgets.remove(“fruits_combobox”)
dbutils.小部件.刪除(“fruits_combobox”)
removeAll命令(dbutils.widgets.removeAll)
從筆記本中刪除所有小部件。
要顯示該命令的幫助信息,請執行命令dbutils.widgets.help(“removeAll”)
.
重要的
如果添加命令來刪除所有小部件,則不能添加後續命令來在同一單元格中創建任何小部件。您必須在另一個單元格中創建小部件。
此示例從筆記本中刪除所有小部件。
dbutils.小部件.removeAll()
dbutils.widgets.removeAll()
dbutils.小部件.removeAll()
文本命令(dbutils.widgets.text)
創建並顯示具有指定編程名稱、默認值和可選標簽的文本小部件。
要顯示該命令的幫助信息,請執行命令dbutils.widgets.help(“文本”)
.
此示例創建並顯示具有編程式名稱的文本小部件your_name_text
.的初始值輸入你的的名字
.這個文本小部件有一個附帶的標簽你的的名字
.本示例以打印文本小部件的初始值結束,輸入你的的名字
.
dbutils.小部件.文本(的名字=“your_name_text”,defaultValue=輸入您的名字的,標簽=“你的名字”)打印(dbutils.小部件.得到(“your_name_text”))#輸入您的名字
dbutils.widgets.text(的名字=“your_name_text”,defaultValue=輸入您的名字的,標簽=“你的名字”)打印(dbutils.widgets.get(“your_name_text”))#輸入你的名字
dbutils.小部件.文本(“your_name_text”,輸入您的名字”,“你的名字”)打印(dbutils.小部件.得到(“your_name_text”))//輸入您的名字
Databricks Utilities API庫
為了加速應用程序開發,在將應用程序部署為生產作業之前,編譯、構建和測試應用程序是很有幫助的。為使您能夠使用Databricks實用程序進行編譯,Databricks提供了dbutils-api
圖書館。你可下載dbutils-api
圖書館的DBUtils API或者通過在構建文件中添加依賴項來包含該庫:
SBT
libraryDependencies+ =“com.databricks”%“dbutils-api_TARGET”%“版本”
Maven
<依賴>< groupId >com.databricks< / groupId >< artifactId >dbutils-api_TARGET< / artifactId ><版本>版本> < /版本< / >的依賴
Gradle
編譯“com.databricks: dbutils-api_TARGET:版本”
取代目標
與期望的目標(例如2.12
),版本
使用所需的版本(例如0.0.5
).有關可用目標和版本的列表,請參閱DBUtils APIMaven Repository網站上的網頁。
根據這個庫構建應用程序之後,就可以部署應用程序了。
重要的
的dbutils-api
庫允許您在本地編譯使用dbutils
,但不是去運行它。要運行應用程序,必須在Databricks中部署它。
限製
調用dbutils
執行程序的內部可能產生意想不到的結果或可能導致錯誤。
如果需要在執行程序上使用dbutils
,有幾個更快、更可擴展的替代方案:
對於文件複製或移動操作,您可以檢查運行文件係統操作的更快選項並行化文件係統操作.
對於文件係統列表和刪除操作,可以參考Spark中的並行列表和刪除方法如何在數據庫中更快地列出和刪除文件.
有關執行程序的信息,請參見集群模式概述在Apache Spark網站上。