Переименование и перемещение файлов S3 в соответствии с именами их папок в pyspark - PullRequest
0 голосов
/ 09 октября 2018

Я скручиваю некоторые фреймы данных с использованием partitionBy на S3.Создается структура папок, как показано ниже.

root/
    date=2018-01-01/
    date=2018-01-02/

Я хочу переместить эти файлы в другой каталог в s3 и переименовать папки как

root1/
       20180101/
       20180102/

Есть ли способ, которым яможно добиться этого из pyspark?

Также мне нужно, чтобы файлы последовательно переименовывались в каталогах, например:

root1/
     20180101/FILE_1.csv
     20180101/FILE_2.csv

1 Ответ

0 голосов
/ 09 октября 2018

Вы не можете напрямую переименовывать объекты S3.

Таким образом, один из способов добиться этого - скопировать объекты с желаемым именем и затем удалить исходные объекты.

Кроме того, S3-контейнерыне имеют структуры каталогов, «структура каталогов» - это просто префиксы в ключах объектов.

У вас есть два варианта: либо вызвать aws cli из python, используя подпроцессы, либо использовать библиотеку boto3, чтобы скопировать все файлы из одного"каталог" к другому.

Решение с использованием подпроцесса:

  import subprocess
  subprocess.check_call("aws s3 sync s3://bucket/root/date=2018-01-01/ s3://bucket/root1/20180101/".split())

команда синхронизации будет копировать рекурсивно.Тогда вы можете использовать aws s3 rm --recursive "somepath" .Вызовите его снова, используя подпроцесс.

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