二進製文件
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
帶有字符串值的選項“圖像/ *”
注釋二進製列。圖像根據二進製內容中的格式信息進行解碼。支持的圖像類型包括骨形態發生蛋白
,gif
,jpeg
,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 >”)