首页 > 解决方案 > apache-arrow 中是否可以使用 Java API 在单独的线程中创建部分向量?

问题描述

在 apache 箭头中是否可以并行创建向量(不同的线程)?我假设由于编写器中的 setPosition(...) 调用,向量中条目的创建顺序不相关。但是当我尝试在并行线程中执行此操作时,我遇到了错误。当我按顺序执行时,它工作正常。我将 ComplexWriterImpl 与每个字段的子写入器一起使用。

实际错误是:

java.lang.IllegalStateException:访问 ArrowBuf 的引用计数应 >= 1

我很想知道,如果通过箭头中的编写器(在 Java 中)创建向量是否被设计为可以乱序并使用并行线程。

标签: javaparallel-processingapache-arrow

解决方案


您能否阐明调用是如何并行化的。如果您有线程使用相同的写入器写入不同的位置,这将导致麻烦。 setPosition不是线程安全的,write调用setSafe()可能会调整缓冲区的大小。

我想不出为什么单线程乱序更新不起作用的技术原因。但是,我不确定这是否是 setPosition 最初设计的(我认为更典型的用例是跳过空值的写入)。


推荐阅读