猿问

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

我正在尝试使用 810 个单独的 tif 文件处理多个文件夹。

文件夹结构:

在尝试为此创建数据框时,我遇到了加载的字节数组为空的问题。我显然需要那些进行处理。


数据框创建:


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 显然包含基本文件夹作为第一个参数。在调试(通过调试器或打印)时,我注意到我的数据框是一堆只有原点集的行,所有其他值要么是 -1 要么是空的。

http://img2.mukewang.com/634e6c5a0001e68f17370139.jpg

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

我做错了什么或不受支持?


有只小跳蛙
浏览 129回答 1
1回答

阿波罗的战车

-1s 表示对应的图片无效。如果您添加dropInvalid选项并将其设置为True,则这些选项可能根本不存在。Spark 使用 Java 的ImageIO库来读取图像。ImageIO利用插件支持不同的图像格式。Java 版本高达 8 只附带 JPEG、PNG、BMP、WBMP 和 GIF 插件。Java 9 为 TIFF 添加了一个标准插件。由于 Spark 官方仅支持 Java 8,因此您的选择是使用 3rd 方 TIFF 插件ImageIO,例如由 Stack Overflow 用户提供的这个插件。要使用上述插件,请在 Spark 会话配置中添加如下内容:.config("spark.jars.packages", "com.twelvemonkeys.imageio:imageio-tiff:3.5,com.twelvemonkeys.imageio:imageio-core:3.5") \您可以在Maven 索引中跟踪包版本。
随时随地看视频慕课网APP

相关分类

Python
我要回答