我在java (arrow-vector,arrow-memory-unsafe)和python (pyarrow) 中使用Apache库在不同的进程()中。
我试图在内存中实现零拷贝DataFrame,但是在java库中找不到从python获得箭头向量的内存地址的API。我在pyarrow库中发现了该API,但在java库中却没有。
我需要的是:
用java创建向量,使用箭头作为内存映射API
VectorSchemaRoot 的内存地址或描述符或java
pyarrow
。
我在2点有问题
你知道我该怎么做吗?谢谢!
发布于 2020-12-30 16:08:14
这里有pyarrow.jvm模块。以下代码应足以将VectorSchemaRoot转换为RecordBatch
import pyarrow.jvm
vs_root = <VectorSchemaRoot>
rb = pyarrow.jvm.record_batch(vs_root)如果您对JDBC对象有一个Python引用,例如通过使用VectorSchemaRoot (关于JDBC的充分使用,请参见https://uwekorn.com/2020/12/30/fast-jdbc-revisited.html ),这就是它的工作方式。
如果使用不同的方法,则需要迭代VectorSchemaRoot的数组,然后迭代它们的缓冲区的数组,以获得所有缓冲区的单独内存地址。然后,这些可以用于在pyarrow端构造缓冲区对象,并返回pyarrow.Array实例。
https://stackoverflow.com/questions/65509407
复制相似问题