У меня есть приложение Apache Spark, которое выполняет серию преобразований в моем наборе данных изображений и возвращает фрагменты этих изображений.Все идет хорошо с преобразованиями, но ничего не происходит, когда я сохраняю изображения локально.
def save_rdd_2_jpeg(rdd, save_dir):
rdd.foreach(lambda sample_element: save_nonlabelled_sample_2_jpeg(sample_element, save_dir))
def save_nonlabelled_sample_2_jpeg(sample, save_dir):
slide_num, img_value = sample
filename = '{slide_num}_{hash}.jpeg'.format(
slide_num=slide_num, hash=np.random.randint(1e4))
filepath = os.path.join(save_dir, filename)
save_jpeg_help(img_value, filepath)
def save_jpeg_help(img_value, filepath):
print(filepath)
dir = os.path.dirname(filepath)
os.makedirs(dir, exist_ok=True)
img = Image.fromarray(img_value.astype(np.uint8), 'RGB')
#img.show()
img.save(filepath)
Путь к файлу, в который я сохраняю свои файлы: data/train_256/1_6300.jpeg
.Этот путь должен быть автоматически создан с помощью
dir = os.path.dirname(filepath)
os.makedirs(dir, exist_ok=True)
Если я раскомментирую строку #img.show()
, изображение откроется.Я действительно не знаю, почему это не экономит.Я предполагаю, что поскольку приложение работает по другому пути, что-то вроде /usr/local/spark-2.4.0-bin-hadoop2.7/work/app-20181206041146-0000/0
, я не могу сохранить этот локальный путь.
Есть идеи, что происходит и как я могу решить эту проблему?