Java 如何将一个简单的、未包装的字节数组写入Apache Arrow ListWriter
我目前正在编写一些将任意数据结构转换为Apache Arrow vectors的代码,但遇到了一些相对简单的问题,即如何将Java 如何将一个简单的、未包装的字节数组写入Apache Arrow ListWriter,java,apache-arrow,Java,Apache Arrow,我目前正在编写一些将任意数据结构转换为Apache Arrow vectors的代码,但遇到了一些相对简单的问题,即如何将字节[]写入列表向量 当通过BaseWriter.ListWriter将数据写入ListVector时,可以非常轻松地添加基本类型–即,writer.integer().writeInt(i)或writer.float4().writeFloat4(f) 但是,对于可变长度类型,如字节(或字符串),只剩下签名类似于以下内容的方法: public void write(VarB
字节[]
写入列表向量
当通过BaseWriter.ListWriter
将数据写入ListVector
时,可以非常轻松地添加基本类型–即,writer.integer().writeInt(i)
或writer.float4().writeFloat4(f)
但是,对于可变长度类型,如字节(或字符串),只剩下签名类似于以下内容的方法:
public void write(VarBinaryHolder h);
public void writeVarBinary(int start, int end, ArrowBuf buffer);
VarBinaryHolder
是为ArrowBuf
生成的简单包装类,它甚至没有构造函数
我期待着类似于VarBinaryVector
提供的东西,它有一个Mutator
和一个setSafe(int-index,byte[]bytes)
方法,该方法完全符合预期
此外,似乎没有直接的方法将字节数组包装到ArrowBuf
中,我看到的唯一方法是将数据写入一个新的VarBinaryVector
,然后获取底层的ArrowBuf
所以,我的问题是:
- 是API缺少了一个方法,还是我甚至不应该使用列表向量来存储字节列表1
- 有没有另一种明显的方法让我错过了
1对于简单的情况,VarBinaryVector
也可以,但我希望能够嵌套列表。此外,列表包含多种类型的功能也很有用