如何處理文件數據磚嗎

你可以使用文件DBFS,當地的司機節點集群,雲對象存儲,外部位置和在磚回購。你可以集成其他係統,但是這些不提供直接文件訪問磚。

本文主要關注理解之間的差異與文件存儲在短暫的交流量存儲附加到正在運行的集群和文件存儲在DBFS根。您可以直接應用的概念顯示DBFS根安裝雲對象存儲,因為/ mnt目錄是DBFS根下。大多數例子也適用於直接與雲交互對象存儲和外部的位置,如果你有需要的特權。

磚的根路徑是什麼?

磚的根路徑取決於執行的代碼。

DBFS根的根路徑火花和DBFS命令。這些包括:

  • 火花SQL

  • DataFrames

  • dbutils.fs

  • % fs

塊存儲卷附加到司機的根路徑在本地代碼執行。這包括:

  • % sh

  • 大多數Python代碼(而不是PySpark)

  • 大多數Scala代碼(而不是火花)

請注意

如果你是工作在磚回購,根路徑% sh你目前回購目錄。更多細節,請參閱以編程方式與工作區文件

DBFS根訪問文件

使用命令默認DBFS根時,您可以使用相對路徑或包括dbfs: /

選擇*拚花' <路徑> ';選擇*拚花dbfs:/ <路徑> '
df=火花負載(“<路徑>”)df保存(“<路徑>”)
dbutilsfs。<命令>(“<路徑>”)
% f <命令> / <路徑>

使用默認的命令司機體積時,您必須使用/ dbfs前路。

% sh <命令> / dbfs / <路徑> /
進口操作係統操作係統。<命令>(“/ dbfs / <路徑>”)

文件係統驅動程序訪問文件

當使用默認驅動程序存儲命令,您可以提供一個相對或絕對路徑。

% sh <命令> / <路徑>
進口操作係統操作係統。<命令>(' / <路徑> ')

使用命令默認DBFS根時,您必須使用文件:/

dbutilsfs。<命令>(“文件:/ <路徑>”)
% f <命令>文件:/ <路徑>

因為這些文件在附件司機卷和火花是分布式處理引擎,並不是所有的操作可以直接訪問數據。如果您需要將數據從司機DBFS文件係統,您可以使用魔法命令或複製文件磚實用工具。

dbutilsfscp(“文件:/ <路徑>”,“dbfs: / <路徑>”)
% sh cp / <路徑> / dbfs / <路徑>
% fs cp文件:/ <路徑> / <路徑>

通過示例了解默認位置

表和圖總結和說明在這一節中描述的命令和何時使用語法。

請注意

利用開源或司機才執行命令使用保險絲訪問雲中的數據對象存儲。添加/ dbfs自動文件路徑使用DBFS融合的實現。

命令

默認位置

閱讀從DBFS根

從本地文件係統讀取

% fs

DBFS根

添加文件:/到路徑

% sh

當地司機節點

添加/ dbfs到路徑

dbutils.fs

DBFS根

添加文件:/到路徑

操作係統。<命令>或其他本地代碼

當地司機節點

添加/ dbfs到路徑

火花。(讀/寫)

DBFS根

不支持

文件路徑圖
# % fs的默認位置是根% fs ls / tmp / % fs mkdir / tmp / my_cloud_dir % fs cp / tmp / test_dbfs。txt / tmp / file_b.txt
# dbutils的默認位置。fs是根dbutilsfsls(“/ tmp /”)dbutilsfs(“/ tmp / my_new_file”,“這是雲存儲的文件。”)
# % sh的默認位置是本地文件係統% sh ls / dbfs / tmp /
# os命令的默認位置是本地文件係統進口操作係統操作係統listdir(“dbfs / tmp /”)
# % 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

訪問文件掛載對象存儲

越來越多的對象存儲DBFS允許您訪問對象在對象存儲在本地文件係統。

dbutilsfsls(“/ mnt / mymount”)df=火花格式(“文本”)負載(“dbfs: / mnt / mymount / my_file.txt”)

本地文件API的限製

以下列出了限製在本地文件API使用DBFS根和坐騎磚運行時。

  • 不支持Amazon S3啟用了客戶端加密的坐騎。

  • 不支持隨機寫道。工作負載要求隨機寫道,本地磁盤上執行操作,然後將結果複製到/ dbfs。例如:

# python進口xlsxwritershutil進口拷貝文件工作簿=xlsxwriter工作簿(' / local_disk0 / tmp / excel.xlsx ')工作表=工作簿add_worksheet()工作表(0,0,“關鍵”)工作表(0,1,“價值”)工作簿關閉()拷貝文件(' / local_disk0 / tmp / excel.xlsx ',' / dbfs / tmp / excel.xlsx ')
  • 沒有稀疏文件。稀疏文件,複製使用cp——稀疏=沒有:

美元cp稀疏。文件/ dbfs / sparse.fileerror writing“/ dbfs / sparse.file”:操作不支持美元cp -稀疏=從不稀疏。文件/ dbfs / sparse.file