【发布时间】:2020-03-30 04:43:19
【问题描述】:
AwkwardArray (awkward0) 是否可以附加到现有的 parquet 文件(由 AwkwardArray 编写)?
普通尴尬的镶木地板存放
以下代码创建一个 Parquet 文件,其中包含一些 Awkward 数组(例如音频数据):
import numpy as np
import awkward as awk
import pyarrow.parquet as pq
# create Awkward Table from dict with numpy arrays
awk_array = awk.fromiter([{"ch0": np.array([0, 1, 2]), "ch1": np.array([3, 4, 5])},
{"ch0": np.array([6, 7]), "ch1": np.array([8, 9])}])
awk_array.tolist()
# [{'ch0': [0, 1, 2], 'ch1': [3, 4, 5]}, {'ch0': [6, 7], 'ch1': [8, 9]}]
# save in Parquet format
awk.toparquet("audio.parquet", awk_array)
# check if we can successfully load again; success
awk.fromparquet("audio.parquet")["ch0"].tolist()
# [[0, 1, 2], [6, 7]]
附加 Parquet(不尴尬)
在pyarrow documentation about Parquet files 中,您可以使用以下方式扩展 Parquet 文件:
with pq.ParquetWriter('example3.parquet', table.schema) as writer:
for i in range(3):
writer.write_table(table)
问题
使用 Awkward 数组可以实现类似的操作吗?:
akw_arrays = []
akw_arrays.append(awk.fromiter([{"ch0": np.array([0, 1, 2]), "ch1": np.array([3, 4, 5])}]))
akw_arrays.append(awk.fromiter([{"ch0": np.array([6, 7]), "ch1": np.array([8, 9])}]))
# Awkward table schema
with pq.ParquetWriter("audio_append.parquet", awk.table.schema) as writer:
for i in range(len(akw_arrays)):
writer.write_table(akw_arrays[i])
类似于awkward.table.schema 或awkward.ParquetWriter()?
实际上,我没有同时拥有两个数组。因此,在写入之前进行连接是不可能的。
或者是唯一的可能使用像Apache Arrow 这样的东西,并在最后一次将所有内容写入磁盘?
【问题讨论】:
标签: arrays python-3.x dataset parquet awkward-array