[FIXED] Lesen Sie die ORC-Datei von S3 in Pandas

Ausgabe

Ich versuche, eine Orc-Datei von s3 in einen Pandas-Datenrahmen einzulesen. In meiner Panda-Version gibt es kein pd.read_orc(…).

Ich habe versucht, dies zu tun:

session = boto3.Session()
s3_client = session.client('s3')

s3_key = "my_object_key"


data = s3_client.get_object(
    Bucket='my_bucket',
    Key=s3_key
)

orc_bytes = data['Body'].read()

Das liest das Objekt als Bytes.

Jetzt versuche ich es so:

orc_data = pyorc.Reader(orc_bytes)

Aber es scheitert, weil:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-11-deaabe8232ce> in <module>
----> 1 data = pyorc.Reader(orc_data)

/anaconda3/envs/linear_opt_3.7/lib/python3.7/site-packages/pyorc/reader.py in __init__(self, fileo, batch_size, column_indices, column_names, struct_repr, converters)
     65             conv = converters
     66         super().__init__(
---> 67             fileo, batch_size, column_indices, column_names, struct_repr, conv
     68         )
     69 

TypeError: Parameter must be a file-like object, but `<class 'bytes'>` was provided

Irgendwann möchte ich es als .csv oder etwas landen, das ich in Pandas einlesen kann. Gibt es einen besseren Weg, dies zu tun?

Lösung

Versuchen Sie, die S3-Daten in eine io.BytesIO:

import io

orc_bytes = io.BytesIO(data['Body'].read())
orc_data = pyorc.Reader(orc_bytes)


Beantwortet von –
Milan Cermak


Antwort geprüft von –
David Goodson (FixError Volunteer)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like