首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Spark:读取tif图像时,dataframe仅包含具有空字节数组的行

Spark:读取tif图像时,dataframe仅包含具有空字节数组的行
EN

Stack Overflow用户
提问于 2020-04-22 04:57:11
回答 1查看 498关注 0票数 0

我正在尝试处理包含810个独立tif文件的多个文件夹。

文件夹结构:

在尝试为此创建数据帧时,我遇到了加载的bytearray为空的问题。很明显我需要这些来处理。

数据帧创建:

代码语言:javascript
运行
复制
spark = SparkSession \
    .builder \
    .appName(name) \
    .config("spark.executor.memory", "2g") \
    .config("spark.driver.memory", "2g") \
    .config("spark.executor.cores", "2") \
    .getOrCreate()
file_rdd = spark.read.format('image').load(argv[1] + '/' + '*/*')

Argv显然包含了作为第一个参数的基本文件夹。在调试(通过调试器或打印)时,我注意到我的dataframe是一堆只设置了原始值的行,所有其他值要么为-1,要么为空。

我主要需要填充字节数组,以及一个源。虽然,当观察我的系统上使用的内存时,有一个明显的峰值,表明它确实加载了一些东西。

我做错了什么或没有得到支持吗?

EN

Stack Overflow用户

回答已采纳

发布于 2020-04-22 06:32:33

-1表示相应的图像是无效的。如果添加dropInvalid选项并将其设置为True,则这些选项可能根本不存在。

Spark使用Java的ImageIO库来读取图像。ImageIO利用插件来支持不同的图像格式。Java版本8以下仅附带JPEG、PNG、BMP、WBMP和GIF插件。Java9为TIFF添加了一个标准插件。由于Spark官方仅支持Java8,因此您的选择是使用第三方ImageIO插件,例如由Stack Overflow用户提供的this one

要使用前面提到的插件,请在Spark session配置中添加类似以下内容:

代码语言:javascript
运行
复制
.config("spark.jars.packages", "com.twelvemonkeys.imageio:imageio-tiff:3.5,com.twelvemonkeys.imageio:imageio-core:3.5") \

您可以在Maven Index中跟踪包版本。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61353106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档