Pyspark выписывает разделенный паркет с использованием проблемы s3a - PullRequest
0 голосов
/ 13 января 2020

У меня есть сценарий pyspark, который читает sp3 в непарсированном файле одного партера, выполняет некоторые преобразования и записывает обратно в другой сегмент s3 с разбивкой по дате.

Я использую s3a для чтения и записи. Чтение в файлах и выполнение преобразований - это нормально и никаких проблем. Тем не менее, когда я пытаюсь записать в s3, используя s3a и разделить его, он выдает следующую ошибку:

WARN s3a.S3AFileSystem: Найденный файл (с /): реальный файл? не должно происходить: папка1 / output org. apache .had oop .fs.FileAlreadyExistsException: невозможно создать каталог для пути 's3a: // bucket1 / folder1 / output', поскольку это файл.

Часть кода, которую я использую для записи, выглядит следующим образом, где я пытаюсь добавить существующий каталог, но новый раздел для новой даты:

output_loc = "s3a://bucket1/folder1/output/"

finalDf.write.partitionBy("date", "advertiser_id") \
.mode("append") \
.parquet(output_loc)

Я использую Had oop v3. 0.0 и Spark 2.4.1

Кто-нибудь сталкивался с этой проблемой при использовании s3a вместо s3n. Кстати, он отлично работает на старом экземпляре, используя s3n.

Спасибо

1 Ответ

0 голосов
/ 15 января 2020

В вашем ведре есть запись s3a://bucket1/folder1/output/ с конечным значением sla sh, размер которого> 0. S3A предупреждает, что он недоволен, так как рассматривается как маркер пустого каталога, который может быть удален после добавления файлов. underneath.

  1. Посмотрите в S3 корзину с консоли AWS, посмотрите, что там, удалите ее
  2. , попробуйте использовать output_lo c без трейлинга /, чтобы увидеть, если это помогает (маловероятно ...)

Добавить продолжение по результатам; если удаление не исправляет ситуацию, возможно, стоит иметь oop JIRA

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...