二進製文件

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

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

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

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

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

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

圖片

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

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

如果所有加載的文件都有一個帶映像擴展,圖像預覽自動啟用:

df=火花格式“binaryFile”負載“< path-to-image-dir >”顯示df# image縮略圖在“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 >”

類似的api也適用於Scala、Java和R語言。

請注意

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

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