提问者:小点点

如何使用Py箭头实现流式写入效果


我的数据是一种流数据。我想把它们存储到一个Parquet文件中。但是Pyarrow每次都会覆盖Parquet文件。那我该怎么办?

我尽量不关闭作家,但它似乎是不可能的,因为如果我不关闭它,那么我就无法阅读这个文件。

这是包:

import pyarrow.parquet as pp
import pyarrow as pa
for name in ['LEE','LSY','asd','wer']:
    writer=pq.ParquetWriter('d:/test.parquet', table.schema)
    arrays=[pa.array([name]),pa.array([2])]
    field=[pa.field('name',pa.string()),pa.field('age',pa.int64())]
    table=pa.Table.from_arrays(arrays,schema=pa.schema(field))
    writer.write_table(table)
writer.close()

但实际上我想每次都关闭写入器,然后重新打开它以在数据中附加一行,如下所示:

for name in ['LEE','LSY','asd','wer']:
    writer=pq.ParquetWriter('d:/test.parquet', table.schema)
    arrays=[pa.array([name]),pa.array([2])]
    field=[pa.field('name',pa.string()),pa.field('age',pa.int64())]
    table=pa.Table.from_arrays(arrays,schema=pa.schema(field))
    writer.write_table(table)
    writer.close()

共1个答案

匿名用户

Parquet文件一旦写入就无法追加。这种情况的典型解决方案是每次都写一个新的parquet文件(可以一起组成单个分区的parquet数据集),或者,如果数据不多,先将python中的数据收集到单个表中,然后写一次。

看到这个电子邮件线程与一些更多的讨论:https://lists.apache.org/thread.html/07b1e3f13b5dae7e34ee3752f3cd4d16a94deb3a5f43893b73475900@