apachearrow在python中从java获取向量

9jyewag0  于 2021-06-27  发布在  Java
关注(0)|答案(1)|浏览(464)

我在java中使用apachearrow库( arrow-vector , arrow-memory-unsafe )还有Python( pyarrow ).
我尝试在内存中实现零拷贝Dataframe,但在java库中找不到合适的api来从python获取箭头向量的内存地址。我在你的电脑里找到了那个api pyarrow 库,但不在java库中。
我需要的是:
在java中创建向量,使用arrow作为内存Mapapi在内存中收集数据
获取的内存地址或描述符 VectorSchemaRoot 或java中的字段向量
将其传递给python库 pyarrow 读取apache箭头矢量数据
我在第二点有问题
你知道我怎么做吗?谢谢您!

qvk1mo1f

qvk1mo1f1#

这就是 pyarrow.jvm 这个模块。以下代码应足以使 VectorSchemaRoot 变成一个 RecordBatch :

import pyarrow.jvm

vs_root = <VectorSchemaRoot>
rb = pyarrow.jvm.record_batch(vs_root)

如果您有一个对java的python引用,那么它就是这样工作的 VectorSchemaRoot 对象,例如使用 jpype (另见https://uwekorn.com/2020/12/30/fast-jdbc-revisited.html 为了充分利用jdbc)。
如果使用不同的方法,则需要迭代 VectorSchemaRoot 然后对它们的缓冲区进行排序,得到所有缓冲区的单个内存地址。然后可以使用这些对象在服务器上构造缓冲区对象 pyarrow 作为回报 pyarrow.Array 示例。

相关问题