二進製文件
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
選項的字符串值“圖像/ *”
注釋二進製列。根據二進製內容中的格式信息對圖像進行解碼。支持的映像類型有骨形態發生蛋白
,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 >”)
類似的api也適用於Scala、Java和R語言。
請注意
為了在加載數據時提高讀取性能,Databricks建議在保存從二進製文件加載的數據時關閉壓縮:
火花.相依.集(“spark.sql.parquet.compression.codec”,“壓縮”)df.寫.格式(“δ”).保存(“< path-to-table >”)