gpt4 book ai didi

python - 如何将腌制数据帧从 GCS 加载到 App Engine

转载 作者:行者123 更新时间:2023-12-01 08:22:43 24 4
gpt4 key购买 nike

我正在尝试将一个 pickled pandas 数据帧从 Google Cloud Storage 加载到 App Engine 中。

我一直在使用 blob.download_to_file() 将字节流读入 p​​andas,但是遇到以下错误: UnpicklingError:无效的加载 key ,m我尝试从头开始寻找,但没有成功,而且我很确定我的理解中缺少一些基本的东西。

当尝试传递一个打开的文件对象并从那里读取时,我得到一个不支持的操作:写入错误

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)

理想情况下,pandas 只会从 pickle 中读取,因为我所有的 GCS 备份都是这种格式,但我愿意接受建议。

最佳答案

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.

如果您处于第二代标准或灵活环境中,您可以尝试使用真正的 /tmp 文件而不是 BytesIO

否则,您必须找出另一种将数据加载到 pandas 中的方法,该方法支持文件对象/描述符。一般来说,该方法在How to restore Tensorflow model from Google bucket without writing to filesystem?中描述。 (上下文不同,但总体思路相同)

关于python - 如何将腌制数据帧从 GCS 加载到 App Engine,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54521916/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com