【发布时间】:2021-05-19 06:23:51
【问题描述】:
我正在读取一组箭头文件并将它们写入 parquet 文件:
import pathlib
from pyarrow import parquet as pq
from pyarrow import feather
import pyarrow as pa
base_path = pathlib.Path('../mydata')
fields = [
pa.field('value', pa.int64()),
pa.field('code', pa.dictionary(pa.int32(), pa.uint64(), ordered=False)),
]
schema = pa.schema(fields)
with pq.ParquetWriter('sample.parquet', schema) as pqwriter:
for file_path in base_path.glob('*.arrow'):
table = feather.read_table(file_path)
pqwriter.write_table(table)
我的问题是箭头文件中的code 字段是用int8 索引而不是int32 定义的。但是int8 的范围是不够的。因此,我为 parquet 文件中的字段 code 定义了一个带有 int32 索引的架构。
但是,现在将箭头表写入 parquet 会抱怨架构不匹配。
如何更改箭头列的数据类型?我检查了 pyarrow API,但没有找到更改架构的方法。这可以在不往返 pandas 的情况下完成吗?
【问题讨论】:
标签: parquet pyarrow apache-arrow