图像数据源

2020-01-08  本文已影响0人  松松土_0b13

spark2.4开始支持image图片数据源操作

import org.apache.spark.sql.SparkSession

object ImageDataSourceTest {
  def main(args: Array[String]): Unit = {
    val spark = SparkSession
      .builder
      .master("local[2]")
      .appName("ImageDataSourceTest")
      .getOrCreate()

    // $example on$
    val df = spark.read.format("image")
      .option("dropInvalid", value = true) // 从结果中删除无效图片
      .load("D:\\data\\image")

    df.select("image.origin", "image.width", "image.height")
      .show(truncate = true)
    // $example off$

    spark.stop()
  }
}

df的schema信息

root
 |-- image: struct (nullable = true)
 |    |-- origin: string (nullable = true)
 |    |-- height: integer (nullable = true)
 |    |-- width: integer (nullable = true)
 |    |-- nChannels: integer (nullable = true)
 |    |-- mode: integer (nullable = true)
 |    |-- data: binary (nullable = true)

如果是多层目录,而且需要获取目录名,可以将目录命为:cls=string,在image的同级目录中会多出信息:“|-- cls: string (nullable = true)”

上一篇下一篇

猜你喜欢

热点阅读