Spark: при чтении изображений tif в кадре содержатся только строки с пустыми байтовыми массивами. - PullRequest
0 голосов
/ 21 апреля 2020

Я пытаюсь обработать несколько папок с 810 отдельными файлами TIF.

Структура папки:

enter image description here

При попытке создать для этого фрейм данных я сталкиваюсь с проблемой, что загруженные байт-массивы опорожнить. И мне, очевидно, они нужны для обработки.

Создание кадра данных:

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, либо пустые.

enter image description here

Мне в основном нужен массив байтов, а также источник. Хотя при наблюдении за памятью, используемой в моей системе, наблюдается явный всплеск, указывающий на то, что она определенно загружает что-то.

Я делаю что-то неправильно или не поддерживается?

1 Ответ

1 голос
/ 22 апреля 2020

-1 s означает, что соответствующие изображения недействительны. Если вы добавите параметр dropInvalid и установите его на True, то, вероятно, его вообще не будет.

Spark использует библиотеку Java ImageIO для чтения изображений. ImageIO использовать плагины для поддержки различных форматов изображений. Java версии до 8 поставляются только с плагинами для JPEG, PNG, BMP, WBMP и GIF. Java 9 добавляет стандартный плагин для TIFF. Поскольку Spark официально поддерживает только Java 8, вы можете использовать сторонний плагин TIFF для ImageIO, например этот , предоставленный другим пользователем переполнения стека.

Чтобы использовать вышеупомянутый плагин, добавьте что-то подобное в конфигурацию сеанса Spark:

.config("spark.jars.packages", "com.twelvemonkeys.imageio:imageio-tiff:3.5,com.twelvemonkeys.imageio:imageio-core:3.5") \

Вы можете отслеживать версии пакетов в Maven Index .

...