Julia中高效迭代3000万行25列Arrow.Table的方法
问题描述
我将Python Pandas中尺寸为(3000万行×25列)的DataFrame保存为Apache Arrow表,随后在Julia中通过input_arrow = Arrow.Table("path/to/table.arrow")读取该表。需要高效迭代该表的行数据,但遇到以下问题:
- 直接遍历
input_arrow会迭代列而非行 - 转换为DataFrames.DataFrame后用
eachrow(df)迭代速度极慢,类似Python中df.iterrows()的低效表现
求类似Python中df.itertuples()的高效迭代方法。
高效解决方案
根据László Hunyadi的推荐方案,可通过以下方式实现高效行迭代:
内存足够时
将Arrow.Table转换为Tables.rowtable,能大幅提升迭代速度:
row_table = Tables.rowtable(input_arrow) # 遍历行数据 for row in row_table # 处理每行数据 end
内存不足时(分块读取)
若完整表无法装入内存,可通过Arrow流分块读取处理:
for chunk in Arrow.Stream("/path/to/table.arrow") row_table = Tables.rowtable(chunk) # 处理当前块的行数据 end
内容的提问来源于stack exchange,提问作者Lay González
相关产品推荐
相关产品推荐

