如何将数据框附加到磁盘上现有的 Apache Arrow 文件
How to append a dataframe to an existing Apache Arrow file on disk
场景:在我的日常 ETL 过程中,我正在考虑将我的数据额外存储为 Apache Arrow 文件,以实现零拷贝序列化。
如果我在磁盘上有一个包含以前数据的现有 Apache Arrow 文件,我如何使用 pyarrow
将我当天处理的数据(作为数据框)附加到磁盘上现有的箭头文件?
我尝试使用“a”模式,但没有用
with pa.OSFile(output, "a") as sink:
with pa.RecordBatchFileWriter(sink, table_df.schema) as writer:
writer.write_table(table_df)
- 这不推荐吗?我是否违反了 Apache Arrow 的设计意图?
- 我的另一种方法是将箭头文件作为数据帧读取,用我当前的数据附加到它,然后再写回。但我想知道是否有更好的方法?
Arrow 文件一旦写入就不可变,您无法通过现有 API 追加数据。如果所有元素都需要在同一个文件中,那么读取数据然后将数据写回将是您唯一的选择。
Arrow Stream 格式在技术上可以支持附加数据,但您将无法随机访问 RecordBatch 的
场景:在我的日常 ETL 过程中,我正在考虑将我的数据额外存储为 Apache Arrow 文件,以实现零拷贝序列化。
如果我在磁盘上有一个包含以前数据的现有 Apache Arrow 文件,我如何使用 pyarrow
将我当天处理的数据(作为数据框)附加到磁盘上现有的箭头文件?
我尝试使用“a”模式,但没有用
with pa.OSFile(output, "a") as sink:
with pa.RecordBatchFileWriter(sink, table_df.schema) as writer:
writer.write_table(table_df)
- 这不推荐吗?我是否违反了 Apache Arrow 的设计意图?
- 我的另一种方法是将箭头文件作为数据帧读取,用我当前的数据附加到它,然后再写回。但我想知道是否有更好的方法?
Arrow 文件一旦写入就不可变,您无法通过现有 API 追加数据。如果所有元素都需要在同一个文件中,那么读取数据然后将数据写回将是您唯一的选择。
Arrow Stream 格式在技术上可以支持附加数据,但您将无法随机访问 RecordBatch 的