У меня есть mapPartitions
на СДР, и в каждом разделе должен быть открыт файл ресурса.Этот модуль, который содержит метод, вызванный mapPartitions
, и файл ресурсов передаются каждому исполнителю с использованием аргумента --py-files
в виде zip-файла.
Чтобы было понятно:
rdd = rdd.mapPartitions(work_doing_method)
def work_doing_method(rows):
for row in rows:
resource_file_path = os.path.join(os.path.dirname(__file__), "resource.json")
with open(resource_file_path) as f:
resource = json.loads(f.read())
...
Когда я делаю это после передачи zip-файла, который включает все это с использованием параметра --py-file
, в команду spark-submit,
Я получаю IOError: [Errno 20] Not a directory:/full/path/to/the/file/within/zip/file
Я не понимаюкак Spark использует zip-файл для чтения зависимостей.Утилита os.path.dirname
возвращает полный путь, включая zip-файл, например./spark/dir/my_dependency_file.zip/path/to/the/resource/file
.Я считаю, что это должно быть проблемой.Я пробовал много комбинаций, чтобы определить путь к файлу.Любая помощь приветствуется.
Спасибо!