簡體   English   中英

在 S3 中用 pyarrow 覆蓋鑲木地板文件

[英]Overwrite parquet file with pyarrow in S3

我正在嘗試用 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"的選項?

我正在嘗試使用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"選項的內容?

我正在嘗試使用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"選項的內容?

這是使用 pyarrow.parquet 的解決方案(需要版本 8+! 請參閱有關 arg 的文檔:“existing_data_behavior” )和 S3FileSystem。

現在決定是否要覆蓋通常構成這些分區的分區或鑲木地板零件文件。

覆蓋單個 .parquet 文件

pq.write_to_dataset(
    my_table, 
    root_path='bucket/mydata/year=2022/data_part001.parquet',
    filesystem=s3,
    existing_data_behavior="overwrite_or_ignore"
)

在每個分區中使用通用基本名稱覆蓋 .parquet 文件

pq.write_to_dataset(
    my_table, 
    root_path='bucket/mydata',
    partition_cols=['year'],
    basename_template='data_part001.parquet',
    filesystem=s3,
    existing_data_behavior="overwrite_or_ignore"
)

覆蓋與新記錄匹配的現有分區

如果您的一些新記錄屬於已經存在的分區,則整個分區將被覆蓋,新分區將添加:

pq.write_to_dataset(
    my_table,
    root_path='bucket/mydata',
    partition_cols=['year'],
    filesystem=s3,
    existing_data_behavior="delete_matching"
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM