開始
用戶指南
管理指南
參考指南
資源
更新2022年6月16日
給我們反饋
請注意
CLI功能不可用這個版本磚在穀歌的雲上。
磚文件係統(DBFS)是一個分布式文件係統裝在一個磚工作區和磚上可用集群。DBFS是抽象的可擴展的對象存儲,並提供以下好處:
允許你山存儲對象,這樣您就可以無縫地訪問數據而不需要憑證。
允許您使用目錄和文件與對象存儲交互語義而不是存儲url。
存在文件對象存儲,所以你終止後不會丟失數據集群。
所有的用戶都擁有讀和寫訪問對象在對象存儲安裝DBFS,除了DBFS根。
默認存儲位置在DBFS被稱為DBFS根。幾種類型的數據存儲在以下DBFS根位置:
/ FileStore:導入的數據文件,生成的陰謀,並上傳庫。看到特殊DBFS根位置。
/ FileStore
/ databricks-datasets:樣本公共數據集。看到特殊DBFS根位置。
/ databricks-datasets
/磚/ init:全球和cluster-named(棄用)init腳本。
/磚/ init
/用戶/蜂巢/倉庫:non-external蜂巢表的數據和元數據。
/用戶/蜂巢/倉庫
在一個新的工作區,DBFS根下麵的默認文件夾:
DBFS根還包含數據包括掛載點元數據和憑證和某些類型的日誌是不可見的,不能直接訪問。
在創建DBFS根工作區創建。磚創建兩個桶在你賬戶:一個水桶DBFS根和一個桶的工作區係統數據。
數據寫入掛載點的路徑(/ mnt)存儲在DBFS根,例如GCS桶中安裝DBFS路徑。
/ mnt
盡管DBFS根可寫、磚建議你在安裝對象存儲中存儲數據,而不是在DBFS根。DBFS根不是用於生產客戶數據。
以下文章提供更多細節特別DBFS根位置:
樣本數據集(databricks-datasets)
您可以瀏覽和搜索DBFS對象使用DBFS文件瀏覽器。
管理員用戶必須使DBFS瀏覽器界麵,然後才能使用它。看到管理DBFS文件瀏覽器。
點擊數據在側邊欄。
單擊DBFS按鈕在頁麵的頂部。
瀏覽器顯示DBFS對象層次結構的垂直泳道。選擇一個對象擴大層次結構。使用前綴搜索在任何泳道找到DBFS對象。
您還可以使用DBFS對象列表磚文件係統實用程序(dbutils.fs),火花api,本地文件的api。看到訪問DBFS。
越來越多的對象存儲DBFS允許您訪問對象在對象存儲在本地文件係統。
信息如何安裝穀歌雲存儲(GCS)桶,明白了穀歌雲存儲。
重要的
嵌套的安裝不支持。例如,下麵的結構不支持:
storage1安裝,/ mnt / storage1
storage1
/ mnt / storage1
storage2安裝,/ mnt / storage1 / storage2
storage2
/ mnt / storage1 / storage2
磚建議創建單獨的山的每一個存儲對象的條目:
storage2安裝,/ mnt / storage2
/ mnt / storage2
所有的用戶都擁有讀和寫訪問對象在對象存儲安裝DBFS,除了DBFS根。有關更多信息,請參見重要信息DBFS權限。
你可以上傳數據DBFS使用文件上傳界麵,磚文件係統實用程序(dbutils.fs),火花api,本地文件的api。
在磚集群訪問DBFS對象使用磚文件係統實用工具或火花api。
在本節中:
DBFS和當地司機節點路徑
文件上傳界麵
dbutils
火花api
本地文件的api
您可以使用文件DBFS或當地的司機節點集群。您可以訪問文件係統使用神奇的命令如% fs或% sh。您還可以使用磚文件係統實用程序(dbutils.fs)。
% fs
% sh
磚使用FUSE掛載為當地提供文件存儲在雲端。保險絲山是一個安全、虛擬文件係統。
默認的路徑blob存儲(根)dbfs: /。
dbfs: /
的默認位置% fs和dbutils.fs是根。因此,要從磁盤讀取或寫入根或外部桶:
dbutils.fs
% f <命令> / <路徑>
dbutils。fs。<命令>(“/ <路徑> /”)
% sh默認從本地文件係統讀取。訪問根或根的安裝路徑% sh前言的路徑/ dbfs /。一個典型用例是如果你是使用單節點庫TensorFlow或scikit-learn,想讀和寫數據雲存儲。
/ dbfs /
% sh <命令> / dbfs / <路徑> /
您還可以使用單節點文件係統api:
進口操作係統操作係統。<命令>(“dbfs / tmp /”)
# % fs的默認位置是根% fs ls / tmp / % fs mkdir / tmp / my_cloud_dir % fs cp / tmp / test_dbfs。txt / tmp / file_b.txt
# dbutils的默認位置。fs是根dbutils。fs。ls(“/ tmp /”)dbutils。fs。把(“/ tmp / my_new_file”,“這是雲存儲的文件。”)
# % sh的默認位置是本地文件係統% sh ls / dbfs / tmp /
# os命令的默認位置是本地文件係統進口操作係統操作係統。listdir(“dbfs / tmp /”)
% fs和dbutils.fs從根(讀取默認情況下dbfs: /)。從本地文件係統讀取,您必須使用文件:/。
文件:/
% f <命令>文件:/ <路徑> dbutils.fs。<命令>(“文件:/ <路徑> /”)
% sh從本地文件係統讀取默認情況下,不要使用文件:/:
% sh <命令> / <路徑>
# % fs和dbutils。fs,you must use file:/ to read from local filesystem% fs ls文件:/ tmp % fs mkdir文件:/ tmp / my_local_dir dbutils.fs.ls(“文件:/ tmp /”)dbutils.fs.put(“文件:/ tmp / my_new_file”,“這是一個文件在本地司機節點。”)
# % sh默認從本地文件係統讀取% sh ls / tmp
dbutils。fs。ls(“/ mnt / mymount”)df=火花。讀。格式(“文本”)。負載(“dbfs: / mymount / my_file.txt”)
表和圖總結和說明在這一節中描述的命令和何時使用語法。
命令
默認位置
閱讀從根
從本地文件係統讀取
根
添加文件:/到路徑
當地司機節點
添加/ dbfs到路徑
/ dbfs
操作係統。<命令>
如果你有小數據文件在您的本地機器,你想分析磚,你可以很容易地導入磚文件係統(DBFS)使用兩個文件上傳接口之一:從DBFS文件瀏覽器或從一個筆記本。
文件上傳到FileStore目錄中。
這個特性在默認情況下是禁用的。管理員必須啟用DBFS瀏覽器界麵才能使用它。看到管理DBFS文件瀏覽器。
單擊上傳按鈕在頁麵的頂部。
在上傳數據到DBFS對話框中,選擇或輸入一個新的選擇目標目錄。
在文件箱,拖拽或使用文件瀏覽器選擇本地文件上傳。
上傳的文件訪問的人都進入工作區。
這個功能是默認啟用。如果一個管理員禁用這個特性,你將沒有選擇上傳文件。
創建一個表使用UI,明白了在磚SQL創建表。
上傳數據中使用的筆記本,遵循這些步驟。
創建一個新的筆記本或打開一個現有的,然後單擊文件>上傳數據
選擇目標目錄DBFS存儲上傳文件。目標目錄默認/ shared_uploads / <您的電子郵件地址> /。
/ shared_uploads / <您的電子郵件地址> /
將文件拖到目標下降或點擊瀏覽定位文件在您的本地文件係統。
當你已經完成了上傳的文件,點擊下一個。
如果你上傳CSV、TSV或JSON文件,磚生成代碼顯示如何將數據加載到一個DataFrame。
將文本保存到剪貼板,然後點擊複製。
點擊完成回到筆記本。
dbutils.fs在DBFS提供file-system-like命令來訪問文件。本節有幾個例子如何寫文件從DBFS和讀取文件的使用dbutils.fs命令。
提示
訪問DBFS幫助菜單,使用dbutils.fs.help ()命令。
dbutils.fs.help ()
dbutils。fs。mkdir(“foobar /”)
dbutils。fs。把(“foobar / baz.txt”,“你好,世界!”)
dbutils。fs。頭(“foobar / baz.txt”)
dbutils。fs。rm(“foobar / baz.txt”)
顯示(dbutils。fs。ls(“dbfs: / foobar”))
筆記本電腦速記——的支持% fs神奇的命令——訪問dbutils文件係統模塊。大多數dbutils.fs命令可以使用% fs神奇的命令。
#列出DBFS根% fs ls# foobar下遞歸刪除文件% fs rm - r foobar#覆蓋的文件“/ mnt /我的文件”字符串“Hello world !”% fs把- f“/ mnt /我的文件”“Hello world !”
當你使用火花api,參考文件“/ mnt /培訓/ file.csv”或“dbfs: / mnt /培訓/ file.csv”。下麵的示例文件寫道foo.text到DBFS/ tmp目錄中。
“/ mnt /培訓/ file.csv”
“dbfs: / mnt /培訓/ file.csv”
foo.text
/ tmp
df。寫。格式(“文本”)。保存(“/ tmp / foo.txt”)
當你使用火花api來訪問DBFS(例如,通過調用spark.read),您必須指定完整的絕對路徑目標DBFS位置。路徑必須從DBFS根開始,由/或dbfs: /,這是等價的。例如,讀取一個文件命名people.json在DBFS位置/ FileStore您可以指定下列:
spark.read
/
people.json
df=火花。讀。格式(“json”)。負載(“dbfs: / FileStore / people.json”)df。顯示()
或者:
df=火花。讀。格式(“json”)。負載(“/ FileStore / people.json”)df。顯示()
以下不工作:
#這將不起作用。路徑必須是絕對的。它#必須從“/”或“dbfs: /”。df=火花。讀。格式(“json”)。負載(“FileStore / people.json”)df。顯示()
您可以使用本地文件api讀寫DBFS路徑。磚用FUSE掛載配置每個集群節點/ dbfs允許集群節點上運行的進程進行讀取和寫入底層分布式存儲層與本地文件api。當使用本地文件api時,您必須提供路徑下/ dbfs。例如:
#寫一個文件DBFS使用Python文件係統api與開放(“/ dbfs / tmp / test_dbfs.txt”,' w ')作為f:f。寫(“Apache火花是很棒的!\ n”)f。寫(“年底的例子!”)#讀取文件與開放(“/ dbfs / tmp / test_dbfs.txt”,“r”)作為f_read:為行在f_read:打印(行)
進口scala。io。源瓦爾文件名=“/ dbfs / tmp / test_dbfs.txt”為(行< -源。fromFile(文件名)。getline()){println(行)}
以下列出了在本地文件API使用局限性。
沒有憑據透傳。
沒有隨機寫道。工作負載要求隨機寫道,本地磁盤上執行操作,然後將結果複製到/ dbfs。例如:
# python進口xlsxwriter從shutil進口拷貝文件工作簿=xlsxwriter。工作簿(' / local_disk0 / tmp / excel.xlsx ')工作表=工作簿。add_worksheet()工作表。寫(0,0,“關鍵”)工作表。寫(0,1,“價值”)工作簿。關閉()拷貝文件(' / local_disk0 / tmp / excel.xlsx ',' / dbfs / tmp / excel.xlsx ')
沒有稀疏文件。稀疏文件,複製使用cp——稀疏=沒有:
cp——稀疏=沒有
美元cp稀疏。file /dbfs/sparse.file error writing“/ dbfs / sparse.file”:操作不支持美元cp -稀疏=從不稀疏。file /dbfs/sparse.file