如何在Julia中读取/写入分区的Apache Arrow或Parquet文件

7

我试图读写一个简单的数据集到Julia中。该数据集是从R中获取的mtcars,其中还加入了一个随机布尔值列bt。 使用R arrow包将文件/文件夹结构(如下所示)写出。

文件布局如下:

arr
|-- bt=false
|   `-- part-1.arrow
`-- bt=true
    `-- part-0.arrow

如何在Julia中忠实地复制原始表格?
我迄今为止尝试过的方法:
1.使用Parquet.jl包。文档建议它应该自动检测布尔/字符串/日期类型的列的分区文件夹结构。当我使用read_parquet(path; kwargs)读取数据时,生成的数据结构没有bt列。我尝试将column_generator关键字参数设置为默认的Parquet.dataset_column_generator,但这并没有起作用。
2.使用Arrow.jl-我找不到一种记录的方法(除非我误解了)来直接读入分区数据结构。
R不会生成附加的元数据文件来存储模式,但我了解到这是可选的,不是arrow规范的一部分?

不幸的是,您最好使用“Pycall”来使用Python Parquet阅读器正确读取此文件。 - BallpointBen
很不幸,我仍会尝试一下。谢谢。 - tinker
你能提供下载这个数据集的链接吗?这将有助于尝试哪些有效,哪些无效。 - Matěj Račinský
谢谢。这是Arrow格式的数据集:https://send.vis.ee/download/18cb5247bc34f898/#ZXfAhzog1OIeX4XhZit22Q - tinker
这个问题在Parquet.jl上有一个开放的问题:https://github.com/JuliaIO/Parquet.jl/issues/154 - Merlin
1个回答

1
尝试这个。他们列出了一个方法如下:

使用Tables.partitions方法返回的迭代器,也可以遍历parquet文件或数据集中的分区。

using Parquet, DataFrames
for partition in Tables.partitions(read_parquet(path))
    df = DataFrame(partition)
    ...
end

进一步参考: https://github.com/JuliaIO/Parquet.jl


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接