python - 尝试在 AWS 上读取 csv 时出现内存错误
问题描述
当我运行以下代码时,出现错误:
import os
import boto3
import pandas as pd
import sys
if sys.version_info[0] < 3:
from StringIO import StringIO # Python 2.x
else:
from io import StringIO # Python 3.x
# get your credentials from environment variables
aws_id = 'XX'
aws_secret = 'YY'
client = boto3.client('s3', aws_access_key_id=aws_id,
aws_secret_access_key=aws_secret)
bucket_name = 'arpbhatnagar'
object_key = 'application_train.csv'
csv_obj = client.get_object(Bucket=bucket_name, Key=object_key)
body = csv_obj['Body']
csv_string = body.read().decode('utf-8')
train = pd.read_csv(StringIO(csv_string))
我收到以下错误:
错误: () 中的 MemoryError Traceback(最近一次调用最后一次) 21 csv_obj = client.get_object(Bucket=bucket_name, Key=object_key) 22 body = csv_obj['Body'] ---> 23 csv_string = body.read()。 decode('utf-8') 24 25 train = pd.read_csv(StringIO(csv_string),low_memory=True,engine='python')
/usr/lib/python2.7/encodings/utf_8.pyc in decode(input, errors) 14 15 def decode(input, errors='strict'): ---> 16 return codecs.utf_8_decode(input, errors, True ) 17 18类IncrementalEncoder(codecs.IncrementalEncoder):
内存错误:
解决方案
下载或摄取时,您的内存似乎不足application_train.csv
。要解决这个问题,您可以先将文件下载到您的磁盘,然后将文件名提供给 Pandas:
tmp_filename = "/tmp/application_train.csv"
client.download_file(bucket_name, object_key, tmp_filename)
training_set = pd.read_csv(tmp_filename)
推荐阅读
- reactjs - 在 React 中使用 useState 切换状态不会作为对象工作
- oracle - 将远程 SAS 服务器连接到另一个远程服务器上的 Oracle 数据库
- php - PHP - 从图片创建缩略图,没有白/黑条(并保持比例)
- pandas - 基于 Pandas 时间序列的过滤
- android - 没有 @Provides 注释的方法不能提供 Dagger/MissingBinding
- c# - 从 Texture2D 制作材质
- laravel - 显示具有相同 user_id 的数据并对 amount_unit 列求和
- javascript - 使用 javascript 将大量 DOM 渲染为模态的问题
- python - 将包含列表的列表二值化
- css - 如何使灰色覆盖覆盖所有网站,包括帖子图像和元数据