我正在尝试用S3中的pyarrow覆盖我的实木复合地板文件。我看过文档记录,却什么也没找到。
这是我的代码:
from s3fs.core import S3FileSystem
import pyarrow as pa
import pyarrow.parquet as pq
s3 = S3FileSystem(anon=False)
output_dir = "s3://mybucket/output/my_table"
my_csv = pd.read_csv(file.csv)
my_table = pa.Table.from_pandas(my_csv , preserve_index=False)
pq.write_to_dataset(my_table,
output_dir,
filesystem=s3,
use_dictionary=True,
compression='snappy')
write_to_dataset函数中是否有类似mode = "overwrite"
的选项?
答案 0 :(得分:0)
抱歉,还没有这样的选项,但是我的解决方法是在写入文件之前使用boto3删除文件。
import boto3
resource = boto3.resource('s3')
resource.Bucket('mybucket').objects.filter(Prefix='output/my_table').delete()
答案 1 :(得分:0)
我认为最好的方法是使用AWS Data Wrangler,它提供3种不同的写入模式:
示例:
import awswrangler as wr
wr.s3.to_parquet(
dataframe=df,
path="s3://...",
mode="overwrite",
dataset=True,
database="my_database", # Optional, only with you want it available on Athena/Glue Catalog
table="my_table",
partition_cols=["PARTITION_COL_NAME"])