0

Я использую EMR для перемещения папки из локальной файловой системы в S3 в Spark с использованием fs.moveFromLocalFile API. Все работает отлично, за исключением 0-байтового файла, созданного EMRFS с именем папки $ _ $ folder для загружаемой папки EVERY.EMR создает 0 байт файлов при использовании HDFS's moveFromLocalFile API

Есть ли способ перемещения папок без создания этого фиктивного файла для каждой папки? (кроме ручного удаления этого файла). Кроме того, почему создается этот фиктивный файл? В настоящее время я использую протокол s3: //, рекомендованный командой EMR.

ответ

0

Мой опыт в том, что функция mkdir(), обычно называемая локальными файловыми системами или hdfs, приведет к созданию пустого файла s3 с именем папки mkdir и добавлением _ $ folder $. В S3 нет понятия «пустая папка», потому что у вас не может быть ключа (pathname) с нулевым значением (файл).

В идеальном мире mkdir (s3: // bucket/path) должен быть noop.

+0

Это сложнее, чем вы думаете. Нам необходимо (a) убедиться, что вы не можете mkdir в файле и (b), что существуют пустые каталоги, когда вы выполняете ls. В ожидаемой семантике fs есть путь 'mkdir; ls path' возвращает что-то успешное. Клиенты FS удаляют файлы маркеров, когда создаются вещи под ними –

0

Не знаю, что такое EMR fs; это похоже на то же расширение, используемое клиентом S3n. Эти файлы удаляются в клиенте при перечислении/статировании путей.

ASF S3a создает один с суффиксом «/».