在 Julia 中迭代具有 3000 万行和 25 列的 Arrow.Table 的快速方法

问题描述 投票:0回答:1

我将大小为 (30M x 25) 的 Python Pandas

DataFrame
保存为 Apache Arrow 表。然后,我在 Julia 中将该表读为:

input_arrow = Arrow.Table("path/to/table.arrow")

我的问题是如何以有效的方式迭代

input_arrow
的行。

如果我这样做:

for c in input_arrow:
    # Do something

然后,我将迭代列,但我需要迭代行。

我尝试过的其他方法是将

Arrow.Table
转换为
DataFrames.DataFrame
:

df = DataFrames.DataFrame(input_arrow)
for row in eachrow(df)
    # do something

但是这个方法非常慢。它让我想起在 Python 中执行

df.iterrows()
有多慢。

那么,这是在 Julia 中迭代 Arrow.Table 的快速方法(类似于

df.itertuples()
)?

python pandas julia apache-arrow
1个回答
0
投票

使用

Tables.rowtable
中的
Tables.jl
将您的 箭头表 转换为 面向行的表,以便您可以对其进行迭代。它非常高效,并且应该比首先转换为 DataFrame 要快得多:

using Arrow, Tables
input_arrow = Arrow.Table("path/to/table.arrow")
row_table = Tables.rowtable(input_arrow)
for row in row_table
    # Do something with row
end

此方法会将整个表加载到内存中。如果它太大而无法放入内存,请使用不同的方法,例如processingchunks中的表。

© www.soinside.com 2019 - 2024. All rights reserved.