二進製文件

磚運行時支持的二進製文件數據源讀取二進製文件,每個文件轉換成單個記錄,其中包含原始文件的內容和元數據。二進製文件數據源產生DataFrame可能與下麵的列和分區列:

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

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

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

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

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

圖片

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

在磚運行時的8.4及以上,磚顯示函數支持顯示圖像數據加載使用二進製數據來源。

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

df=火花格式(“binaryFile”)負載(“< path-to-image-dir >”)顯示(df)#圖片縮略圖呈現在“內容”列
圖片預覽

或者,您可以強製使用圖像預覽功能mimeType選擇一個字符串值“圖像/ *”標注二進製列。圖像解碼基於二進製內容的格式信息。支持的圖像類型骨形態發生蛋白,gif,jpeg,png。不支持的文件作為一個破碎的圖片圖標出現。

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

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

選項

加載文件路徑匹配給定的一團模式,同時保持分區的行為發現,您可以使用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。

請注意

提高讀取性能負載數據時,數據磚建議關掉壓縮保存數據時從二進製文件加載:

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