如何在AWS的S3中打开存储在pickle中的数据框?

时间:2019-05-18 11:54:17

标签: python amazon-s3 pickle

我正在尝试加载存储在pickle中的数据框文件,并编辑该数据框。我正在Linux ubuntu AWS服务器中打开,从S3加载。我可以在环境中使用pd.read_pickle来打开,但从S3加载时似乎不太可能

我可以从CSV加载和保存,也可以保存到pickle,但是找不到用于加载pickle文件的解决方案。我尝试复制几乎可以在stackoverflow上获得的所有建议,但似乎没有一个起作用。

首先,我尝试了

import pandas as pd
import boto3
import io

s3=boto3.client('s3')
session = boto3.session.Session()
obj = s3.get_object(Bucket = 'mybucket', Key = 'inputfile.pkl')

response = s3.get_object(Bucket=bucket, Key= inputfile)

body_string = response['Body'].read()
pickled = pickle.dumps(body_string)
df=pd.read_pickle(pickled) #embedded null type error

我也尝试过

import pickle
import boto3

s3 = boto3.resource('s3')
my_pickle = pickle.loads(s3.Bucket('bucket').Object('inputfile').get()['Body'].read())

df = pd.read_pickle(my_pickle) # with open(path, 'rb') as fh:
                                   # return pkl.load(fh) error

下面是我用来保存泡菜文件的方法

s3_resource = boto3.resource("s3")
s3=boto3.client('s3')

obj = s3.get_object(Bucket = bucket, Key = inputfile)

df = pd.read_csv(obj['Body'],index_col = False, low_memory = False)

pickle_buffer = io.BytesIO()

df.to_pickle(outputfile) 

s3_resource.Object(bucket, outputfile).put(Body = open(outputfile, 'rb'))

从df = pd.read_pickle()或df = pd.read_csv()得到的结果,我希望得到一个可以使用的df

0 个答案:

没有答案