二进制文件
砖运行时支持的二进制文件数据源读取二进制文件,每个文件转换成单个记录,其中包含原始文件的内容和元数据。二进制文件数据源产生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 >”)