二进制文件

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