Извлечение файлов из zip на S3 и запись файлов на S3 в виде текста с использованием pyspark - PullRequest
0 голосов
/ 20 сентября 2019

Я играю с обработкой zip-файлов на S3, извлекаю данные из текстовых файлов в zip и записываю эти текстовые данные обратно на S3.Я настроил вещи, создав zip-файл с двумя небольшими текстовыми файлами.Один вызвал 123.txt, содержащий строку:

123245

Другой был назван abc.txt и содержал строки:

abc
def
x

Это то, что у меня есть с точки зрения извлечения данных

import zipfile
import boto
import io

def zip_extract(x):
    in_memory_data = io.BytesIO(x[1])
    file_obj = zipfile.ZipFile(in_memory_data, "r")
    files = [i for i in file_obj.namelist()]
    return dict(zip(files, [file_obj.open(file).read() for file in files]))

zips = sc.binaryFiles("s3a://my_bucket/myzip.zip")
files_data = zips.map(zip_extract).collect()

И когда я запускаю следующий код, я вижу имена файлов и их содержимое примерно так:

for data in files_data:
    for k, v in data.items():
        print('{}: {}'.format(k, v))
123.txt: b'12345'
abc.txt: b'abc\r\ndef\r\nx'

У меня вопрос о том, как мне теперь создать двафайлы 123.txt и abc.txt на S3 с содержимым, как показано?

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