web-dev-qa-db-fra.com

Comment écrire un fichier de parquet de pandas dataframe en S3 en python

J'ai une base de données de pandas. Je veux écrire ce dataframe dans un fichier de parquet dans S3 . J'ai besoin d'un exemple de code pour le même. mais je ne pouvais pas obtenir un exemple de code de travail.

2
Alexsander

nous pouvons combiner pyarrow et boto3 .

exemple de code rapide:

def main():
    data = {0: {"data1": "value1"}}
    df = pd.DataFrame.from_dict(data, orient='index')
    write_pandas_parquet_to_s3(
        df, "bucket", "folder/test/file.parquet", ".tmp/file.parquet")


def write_pandas_parquet_to_s3(df, bucketName, keyName, fileName):
    # dummy dataframe
    table = pa.Table.from_pandas(df)
    pq.write_table(table, fileName)

    # upload to s3
    s3 = boto3.client("s3")
    BucketName = bucketName
    with open(fileName) as f:
       object_data = f.read()
       s3.put_object(Body=object_data, Bucket=BucketName, Key=keyName)
1
andreas

Pour votre référence, j'ai les travaux de code suivants.

s3_url = 's3://bucket/folder/bucket.parquet.gzip'
df.to_parquet(s3_url, compression='gzip')

Pour utiliser to_parquet, vous devez installer pyarrow ou fastparquet. Assurez-vous également que vos informations config et credentials, situées dans le dossier .aws, sont correctes.

0
Kiat