2017-03-10 1 views
0

Je voudrais écrire un objet json à S3 en parquet en utilisant Amazon Lambda (python)!Ecrire un json à un objet parquet à mettre en S3 avec Lambda Python

Cependant, je ne peux pas se connecter fastparquet lib avec boto3 afin de le faire depuis le premier lib a une méthode pour writo dans un fichier et boto3 attend un objet à mettre dans le seau S3

Toute suggestion?

exemple fastparquet

fastparque.write('test.parquet', df, compression='GZIP', file_scheme='hive') 

Boto3 exemple

client = authenticate_s3() 
     response = client.put_object(Body=Body, Bucket=Bucket, Key=Key) 

le corps correspondrait à la teneur en parquet! et il permettrait d'écrire dans S3

+0

Utilisez un objet de type fichier, puis envoyer le contenu du Fichier- comme objet à s3 avec Boto3 –

+0

@Apero bonjour, thx! J'ai déjà pensé à cela, en utilisant par exemple StringIO mais fastparquet.write ne me permet pas d'écrire dans StringIO Je pourrais écrire dans un fichier, puis lire dans StringIO et cela fonctionnerait mais je ne peux pas le faire à l'intérieur aws-lambda –

+0

Ouais , Je viens de passer en revue leur code et c'est assez basique en termes de possibilités. Désolé mais il semble que vous devrez écrire dans le fichier, puis lire le fichier pour l'envoyer à S3. –

Répondre

2

Vous pouvez écrire tout dataframe à s3 en utilisant l'argument open_with comme mentionné dans le document de fastparquet http://fastparquet.readthedocs.io/en/latest/api.html#fastparquet.write

import s3fs 
from fastparquet import write 

s3 = s3fs.S3FileSystem() 
myopen = s3.open 
write('bucket-name/filename.parq.gzip', frame, compression='GZIP', open_with=myopen)