Как записать файл паркетного файла из pandas dataframe в S3 на python - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть датафрейм для панд.я хочу записать этот фрейм данных в файл паркета в S3.Мне нужен пример кода для того же. Я попытался Google.но я не смог получить рабочий пример кода.

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

Для справки, у меня работает следующий код.

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

Чтобы использовать to_parquet, вам необходимо установить pyarrow или fastparquet.Кроме того, убедитесь, что у вас есть правильная информация в файлах config и credentials, расположенных в папке .aws.

Редактировать: Кроме того, необходим s3fs.см https://stackoverflow.com/a/54006942/1862909

0 голосов
/ 27 ноября 2018

мы можем объединить пиарроу и boto3 .

быстрый пример кода:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...