Как загрузить маринованные кадры данных из GCS в App Engine - PullRequest
0 голосов
/ 04 февраля 2019

Я пытаюсь загрузить маринованный фрейм данных панд из Google Cloud Storage в App Engine.

Я использую blob.download_to_file () для чтения потока в панды, однако я сталкиваюсь со следующей ошибкой:UnpicklingError: invalid load key, m Я пытался искать начало безрезультатно, и я почти уверен, что в моем понимании чего-то не хватает.

При попытке передать объект открытого файла и прочитать оттуда, я получаю UnsupportedOperation: writeошибка

from io import BytesIO
from google.cloud import storage

def get_byte_fileobj(project, bucket, path) -> BytesIO:
    blob = _get_blob(bucket, path, project)
    byte_stream = BytesIO()
    blob.download_to_file(byte_stream)
    byte_stream.seek(0)
    return(byte_stream)

def _get_blob(bucket_name, path, project):
    credentials = service_account.Credentials.from_service_account_file(
        service_account_credentials_path) if service_account_credentials_path else None
    storage_client = storage.Client(project=project, credentials=credentials)
    bucket = storage_client.get_bucket(bucket_name)
    blob = bucket.blob(path)
    return(blob)

fileobj = get_byte_fileobj(projectid, 'backups', 'Matches/Matches.pickle')
pd.read_pickle(fileobj)

В идеале панды просто читали бы с рассола, поскольку все мои резервные копии GCS находятся в этом формате, но я открыт для предложений.

1 Ответ

0 голосов
/ 04 февраля 2019

Метод pandas.read_pickle () принимает в качестве аргумента строку пути к файлу, а не обработчик / объект файла:

pandas.read_pickle(path, compression='infer') 
   Load pickled pandas object (or any object) from file.

path : str 
   File path where the pickled object will be loaded.

Если выв стандарте 2-го поколения или в гибкой среде вы можете попытаться использовать настоящий файл /tmp вместо BytesIO.

В противном случае вам придется найти другой способ загрузки данных в панды, которыйподдерживает файловый объект / дескриптор.В целом подход описан в Как восстановить модель Tensorflow из корзины Google без записи в файловую систему? (контекст другой, но общая идея)

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