二進製文件
磚運行時支持的二進製文件數據源讀取二進製文件,每個文件轉換成單個記錄,其中包含原始文件的內容和元數據。二進製文件數據源產生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 >”)