二進製文件

Databricks Runtime支持二進製文件數據源,它讀取二進製文件並將每個文件轉換為包含文件原始內容和元數據的單個記錄。二進製文件數據源生成一個包含以下列和可能的分區列的DataFrame:

  • 路徑(StringType):文件的路徑。

  • modificationTime(TimestampType):文件修改的時間。在某些Hadoop文件係統實現中,此參數可能不可用,並且該值將被設置為默認值。

  • 長度(LongType):文件長度(以字節為單位)。

  • 內容(BinaryType):文件的內容。

若要讀取二進製文件,請指定數據源格式作為binaryFile

圖片

Databricks建議使用二進製文件數據源加載圖像數據。

在Databricks Runtime 8.4及以上版本中,Databricks顯示函數支持顯示使用二進製數據源加載的圖像數據。

如果所有加載的文件的文件名都帶有映像擴展,圖像預覽功能自動開啟:

df火花格式“binaryFile”負載“< path-to-image-dir >”顯示df#圖像縮略圖呈現在“content”列中
圖片預覽

方法強製啟用圖像預覽功能mimeType帶有字符串值的選項“圖像/ *”注釋二進製列。圖像根據二進製內容中的格式信息進行解碼。支持的圖像類型包括骨形態發生蛋白gifjpeg,png.不支持的文件顯示為損壞的圖像圖標。

df火花格式“binaryFile”選項“mimeType”“圖像/ *”負載“< path-to-dir >”顯示df#不支持的文件顯示為一個破碎的圖像圖標
不支持的文件類型的圖像預覽

看到圖像應用的參考解決方案對於推薦的工作流來處理圖像數據。

選項

要加載與給定glob模式匹配的路徑的文件,同時保持分區發現行為,可以使用pathGlobFilter選擇。下麵的代碼通過分區發現從輸入目錄讀取所有JPG文件:

df火花格式“binaryFile”選項“pathGlobFilter”“* . jpg”負載“< path-to-dir >”

如果要忽略分區發現並遞歸搜索輸入目錄下的文件,請使用recursiveFileLookup選擇。此選項搜索嵌套目錄,即使它們的名稱也是如此遵循分區命名方案,如日期= 2019-07-01.下麵的代碼遞歸地從輸入目錄讀取所有JPG文件,並忽略分區發現:

df火花格式“binaryFile”選項“pathGlobFilter”“* . jpg”選項“recursiveFileLookup”“真正的”負載“< path-to-dir >”

Scala、Java和R也有類似的api。

請注意

為了提高讀取性能,當你加載數據時,Databricks建議關閉壓縮,當你保存從二進製文件加載的數據時:

火花相依“spark.sql.parquet.compression.codec”“壓縮”df格式“δ”保存“< path-to-table >”