Чтение мультиобъекта json gz файла из S3 в python - PullRequest
0 голосов
/ 25 марта 2020

У меня есть несколько файлов в корзине S3, и я пытаюсь прочитать их как можно быстрее. Формат файла gzip, и внутри него есть один мультиобъектный json файл, подобный этому:

{"id":"test1", "created":"2020-01-01", "lastUpdated":"2020-01-01T00:00:00.000Z"}
{"id":"test2", "created":"2020-01-01", "lastUpdated":"2020-01-01T00:00:00.000Z"}

Что я хочу сделать, это загрузить файл json и прочитать каждый объект и процесс Это. После некоторых исследований это единственный код, который сработал для меня

import json
import gzip
import boto3
from io import BytesIO

s3 = boto3.resource('s3')
bucket = s3.Bucket("my-bucket")

for obj in bucket.objects.filter(Prefix='my-prefix').all():
    buffer = BytesIO(obj.get()['Body'].read())
    gzipfile = gzip.GzipFile(fileobj=buffer)
    for line in gzipfile:
        json_object = json.loads(line)
        # some stuff with the json_object

Кто-нибудь знает лучший способ прочитать объект json?

Спасибо за помощь

1 Ответ

0 голосов
/ 31 марта 2020

После того, как у вас есть буфер, попробуйте следующее

decompressed = gzip.decompress(buffer) json_lines = json.loads(decompressed) for json_obj in json_lines: # Do stuff

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