5

是否可以在 s3 中从一个文件夹读取和写入镶木地板文件到另一个文件夹,而无需使用 pyarrow 转换为熊猫。

这是我的代码:

import pyarrow.parquet as pq
import pyarrow as pa
import s3fs

s3 = s3fs.S3FileSystem()

bucket = 'demo-s3'

pd = pq.ParquetDataset('s3://{0}/old'.format(bucket), filesystem=s3).read(nthreads=4).to_pandas()
table = pa.Table.from_pandas(pd)
pq.write_to_dataset(table, 's3://{0}/new'.format(bucket), filesystem=s3, use_dictionary=True, compression='snappy')
4

2 回答 2

9

如果您不想直接复制文件,看来您确实可以避免使用 pandas:

table = pq.ParquetDataset('s3://{0}/old'.format(bucket),
    filesystem=s3).read(nthreads=4)
pq.write_to_dataset(table, 's3://{0}/new'.format(bucket), 
    filesystem=s3, use_dictionary=True, compression='snappy')
于 2018-06-26T16:56:12.950 回答
0

为什么不直接复制(S3 -> S3)并节省内存和 I/O?

import awswrangler as wr

SOURCE_PATH = "s3://..."
TARGET_PATH = "s3://..."

wr.s3.copy_objects(
    source_path=SOURCE_PATH,
    target_path=TARGET_PATH
)

参考

于 2020-01-10T12:41:42.407 回答