Amazon s3 日志拼花地板文件名由S3上的pyarrow创建
我们使用pyarrow将数据附加到存储在S3(已分区)中的现有拼花地板数据集。这在AWS lambda上每小时运行几次。一个最简单的例子是:Amazon s3 日志拼花地板文件名由S3上的pyarrow创建,amazon-s3,parquet,pyarrow,apache-arrow,python-s3fs,Amazon S3,Parquet,Pyarrow,Apache Arrow,Python S3fs,我们使用pyarrow将数据附加到存储在S3(已分区)中的现有拼花地板数据集。这在AWS lambda上每小时运行几次。一个最简单的例子是: 将pyarrow导入为pa 导入pyarrow.parquet作为pq 导入S3F df=…#现有熊猫df table=pa.table.from_熊猫(df) pq.write_至_数据集( 桌子 filesystem=s3, 根路径=f“s3://s3路径/”, 分区_cols=[‘年’,‘月”] ) 因此,根据内部数据值,许多拼花地板文件将写入S3
将pyarrow导入为pa
导入pyarrow.parquet作为pq
导入S3F
df=…#现有熊猫df
table=pa.table.from_熊猫(df)
pq.write_至_数据集(
桌子
filesystem=s3,
根路径=f“s3://s3路径/”,
分区_cols=[‘年’,‘月”]
)
因此,根据内部数据值,许多拼花地板文件将写入S3。我们的目标是通过输出文件名(S3键),跟踪哪些文件已写入文件系统
是否有任何方法可以捕获由pyarrow
或s3fs
编写的实际文件名?拼花地板文件名是根据计算出的哈希名称任意命名的,我看不到上述两个包的任何日志记录功能。开始编写之前,您可以为您的文件提供名称为partition\u filename\u cb
pyarrow.parquet.write_to_dataset(table, root_path, partition_cols=None, partition_filename_cb=None, filesystem=None, **kwargs)
如果您还可以使用:
您使用的是什么pyarrow版本?从0.15.0开始,您可以在写入之前为文件提供名称。非常感谢。工作起来很有魅力,却错过了那项新功能。如果你想添加评论作为答案,我会将其标记为选中,否则我可以自己回答。我会在某个时候发布答案。谢谢你的确认。
import awswrangler as wr
paths = wr.pandas.to_parquet(
dataframe=df,
path="s3://...",
dataset=True,
database="my_database", # Optional, only with you want it available on Athena/Glue Catalog
table="my_table",
partition_cols=["PARTITION_COL_NAME"])["paths"]
print(paths)