Apache Spark 2.3 提供了 ImageSchema.readImages API(参见 Microsoft 的这篇文章),该 API 最初是在 MMLSpark 库中开发的。在 Apache Spark 2.4 中,这个 API 更容易使用,因为它现在是一个内置的数据源。使用图像数据源,您可以从目录加载图像并获取具有单个图像列的DataFrame。本文将介绍什么是图像数据源,并介绍如何使用它。
图像导入
让我们来看看如何通过图像数据源将图像读入 Spark。在 PySpark 中,你可以通过以下方式导入图像:
|
Scala、Java 以及 R 等语言里面的使用和这个类似。这里的路径可以是嵌套目录结构(例如,使用 /path/to/dir/** 之类的路径);也可以是一些带有分区目录的路径(比如 /path/to/dir/date=2018-01-02/category=automobile),这时我们可以利用分区发现( partition discovery)功能。
图像模式
图像加载之后其类型是 DataFrame ,其中包含一个名为 image 的列。它是一个结构类型(struct-type)列,包含以下字段: