pandasを使ってs3から1.5 GBのファイルを読み込もうとしています& boto3 今日、私は36 GBの深いファイルを広いファイル(1.5 GB)にピボットさせなければなりませんでした。 1.5GBのファイルをローカルに書き、pandas.read_csv()を使ってすべてが正常かどうかを確認しました。それは何の問題もなく読んだ。pandas&boto3を使用してs3からcsvファイルを読み取っているときにメモリエラーが発生しました。 Pythonのエラー:free():無効なポインタ:
しかし、boto3を使用して読み込み中にs3にコピーした後、奇妙なメモリエラーのためにコードエラーが発生します。このコードは通常、300〜1 GBのファイルサイズで正常に動作します。
現在、正確にエラーが発生している箇所を特定できません。私は、同じメモリエラーを読み込み中にs3 &に再度ファイルをコピーしようとしました。 S3から読み取るする
コード:
input_file_obj= s3.get_object(Bucket=bucket, Key=file)
input_file_content= input_file_obj["Body"].read()
df=pd.read_csv(io.BytesIO(input_file_content), index_col=None, delimiter=delim,header=hdr,low_memory=False)
私はそれが私が使用していEC2のマシンで利用可能なRAMの32 GB単位を持っているので、問題になることができませんでしたラムを考えています。また私が取り組んでいるマシンはUnixです。
サンプルエラー:
*** Error in `python': free(): invalid pointer: 0x00007fd70340c3e4 ***
======= Backtrace: =========
/lib64/libc.so.6(+0x7c503)[0x7fd71d737503]
/home/user/anaconda3/lib/python3.6/site-packages/pandas/_libs/parsers.cpython-36m-x86_64-linux-gnu.so(parser_cleanup+0x1a)[0x7fd70340467a]
linkエラーログ
'read_csv'に' engine = 'python''や 'low_memory = True'を設定しても同じエラーが出ますか?ちょっとした(グーグル)(https://github.com/tensorflow/tensorflow/issues/9328#issuecomment-296998879)は、これがCの非互換性と関係している可能性があることを示唆しています。EC2イメージは、そのままの状態で作業してください。 –
@andrew_reece私は 'low_memory = False'を与えるのに疲れて、魅力的に機能しました。私はGoogleとpandasのドキュメントを参照しましたが、このパラメータについてはあまり気にしません。現在、この機能を使用するすべてのモジュールをテストし、副作用があるかどうかを確認します。 – stormfield
また、ローカルとs3からの読み取りの違いは、この1つのパラメータの値です。だから私があなたがそれを指摘した後、それを最初にテストしたのです。 – stormfield