如何从 S3 存储桶加载 pickle(.pkl) 文件



我已成功从 Amazon S3 读取 csv 文件。但是我有情绪模型的.pkl文件。我想加载这个 .pkl 文件来预测情绪。这是我的代码 -

import cPickle
import boto3
import pandas as pd
import boto3.session
session = boto3.session.Session(region_name='eu-central-1')
s3client = session.client('s3', config= boto3.session.Config(signature_version='s3v4'),aws_access_key_id='my-ACCESS-KEY-ID',
         aws_secret_access_key='my-ACCESS-KEY')
response = s3client.get_object(Bucket='sentiment-data', Key='positive_model_data.pkl')
nb_detector = cPickle.load(open(response['Body']))
nb_predict = nb_detector.predict('food is very good')[0]
print nb_predict 

错误强制到 Unicode:需要字符串或缓冲区,找到 StreamingBody

如何从 S3 加载 pickel 文件???

cPickle.load()方法需要一个文件。您需要使用loads方法而不是loadloads需要字符串数据,如错误消息中所述。但是,response['Body']给你StreamingBody. StreamingBody有一个名为 read 的方法,它可以返回字符串内容。

...
body_string = response['Body'].read()
positive_model_data = cPickle.loads(body_string)
print positive_model_data
...

它对你有用吗?

boto3 客户端在使用下标时返回流体类型 ['Body']在加载之前,需要先读取流式处理正文中的字节内容。这是使用代码小节的工作实现。

s3_data = response['Body'].read() #read byte data
nb_detector = pickle.load(s3_data) #load pickle data
nb_predict = nb_detector.predict('food is very good')[0]
print(nb_predict)

相关内容

  • 没有找到相关文章

最新更新