我将大小(30 M x 25)的Python Pandas DataFrame
保存为Apache Arrow表.然后,我在朱莉娅中读到的那张表格是:
input_arrow = Arrow.Table("path/to/table.arrow")
我的问题是如何以有效的方式迭代input_arrow
行.
如果我只是这样做:
for c in input_arrow:
# Do something
然后,我会迭代列,但我需要迭代行.
我try 过的其他方法是将Arrow.Table
转换为DataFrames.DataFrame
:
df = DataFrames.DataFrame(input_arrow)
for row in eachrow(df)
# do something
但这种方法非常慢.它让我想起在Python中执行df.iterrows()
是多么慢.
那么,哪种方法是在Julia中迭代Arrow.Table的最快方法(类似于df.itertuples()
)?
Solution
正如László Hunyadi在公认的解决方案中所建议的那样,将Arrow.Table
转换为Tables.rowtable
显示出显着的加速.
RAM有一个问题; Arrow.Table
和Tables.rowtable
不适合我的RAM,所以我必须按以下方式按块读取Arrow.Table
:
for chunk in Arrow.Stream("/path/to/table.arrow")
row_table = Tables.rowtable(chunk)
# do something with row_table
end