Spark 2.4 支持图片格式数据源了

栏目: 编程工具 · 发布时间: 5年前

内容简介:Spark2.4开始支持内置的图片数据源读取器,可以直接读取图片的数据。目录可以还可以是/path/to/dir/**和分区目录。读取的数据会生成一个DF,该DF就一列列名字叫做 image。但是其实他是个嵌套数据结构,具体结构如下:

Spark2.4开始支持内置的图片数据源读取器,可以直接读取图片的数据。

val df = spark.read.format("image").load("/opt/pic/")

目录可以还可以是/path/to/dir/**和分区目录。

Image Schema

读取的数据会生成一个DF,该DF就一列列名字叫做 image。但是其实他是个嵌套数据结构,具体结构如下:

<span>root</span>

<span>|-- image: <span>struct</span> (<span>nullable</span> = <span>true</span>)</span>

<span>| |-- origin: string (<span>nullable</span> = <span>true</span>)</span>

<span>| |-- height: integer (<span>nullable</span> = <span>true</span>)</span>

<span>| |-- width: integer (<span>nullable</span> = <span>true</span>)</span>

<span>| |-- nChannels: integer (<span>nullable</span> = <span>true</span>)</span>

<span>| |-- mode: integer (<span>nullable</span> = <span>true</span>)</span>

<span>| |-- data: binary (<span>nullable</span> = <span>true</span>)</span>

orgin:代表图片的路径。

nChannels:颜色通道的数量。对于灰度图像,典型值为1,对于彩色图像(例如,RGB),典型值为3,对于具有alpha通道的彩色图像,典型值为4。

mode:整数标志,提供有关如何解释数据字段的信息。它指定数据存储的数据类型和通道顺序。希望(但不强制)字段的值映射到下面显示的OpenCV类型之一。OpenCV类型定义为1,2,3或4个通道,并为像素值定义了几种数据类型。通道顺序指定颜色的存储顺序。例如,如果有一个包含红色,蓝色和绿色组件的典型三通道图像,则有六种可能的排序。大多数库使用RGB或BGR。希望三(4)个通道OpenCV类型为BGR(A)顺序。

OpenCV中的类型到数字的映射(数据类型x通道数)

Spark 2.4 支持图片格式数据源了

data:以二进制格式存储的图像数据。图像数据表示为具有尺寸形状(高度,宽度,n通道)和由schema字段指定的类型t的数组值的三维阵列。该数组以row-major顺序存储。

通道顺序(channel order)

通道顺序指定存储颜色的顺序。例如,如果您有一个包含红色,蓝色和绿色组件的典型三通道图像,则有六种可能的排序。大多数库使用RGB或BGR。预计三(4)个通道OpenCV类型为BGR(A)顺序

案例

对于有监督学习,可以用label作为分区列,目前label仅仅支持数字类型。

Spark 2.4 支持图片格式数据源了

<span><span>val</span> spark = SparkSession</span>

<span> .builder()</span>

<span> .appName(<span>&quot;Spark reads pics&quot;</span>)</span>

<span> .master(<span>&quot;local[2]&quot;</span>)</span>

<span> .getOrCreate()</span>

<span><br /></span>

<span>val df = spark.read.format(<span>&quot;image&quot;</span>).load(<span>&quot;/opt/pic&quot;</span>)</span>

<span><br /></span>

<span>df.printSchema()</span>

<span>df.<span>select</span>(col(<span>&quot;label&quot;</span>),</span>

<span> col(<span>&quot;image.origin&quot;</span>),</span>

<span> col(<span>&quot;image.height&quot;</span>),</span>

<span> col(<span>&quot;image.width&quot;</span>),</span>

<span> col(<span>&quot;image.nChannels&quot;</span>),</span>

<span> col(<span>&quot;image.mode&quot;</span>)).show(<span>1</span>,<span>false</span>)</span>

<span><br /></span>

<span>spark.stop()</span>

Spark 2.4 支持图片格式数据源了

关于图片处理,目前spark支持的算法并不是很多,希望后续版本继续完善吧。

数据下载地址

http://download.tensorflow.org/example_images/flower_photos.tgz

750好友一起学习大数据了~

Spark 2.4 支持图片格式数据源了


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

极简算法史:从数学到机器的故事

极简算法史:从数学到机器的故事

[法] 吕克•德•布拉班迪尔 / 任轶 / 人民邮电出版社 / 2019-1 / 39.00元

数学、逻辑学、计算机科学三大领域实属一家,彼此成就,彼此影响。从古希腊哲学到“无所不能”的计算机,数字、计算、推理这些貌似简单的概念在三千年里融汇、碰撞。如何将逻辑赋予数学意义?如何从简单运算走向复杂智慧?这背后充满了人类智慧的闪光:从柏拉图、莱布尼茨、罗素、香农到图灵都试图从数学公式中证明推理的合理性,缔造完美的思维体系。他们是凭天赋制胜,还是鲁莽地大胆一搏?本书描绘了一场人类探索数学、算法与逻......一起来看看 《极简算法史:从数学到机器的故事》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

URL 编码/解码
URL 编码/解码

URL 编码/解码