如何将简单的、未包装的字节数组写入 Apache-Arrow ListWriter

Sha*_*ick 6 java apache-arrow

我目前正在编写一些代码来将任意数据结构转换为 Apache Arrow 向量,但陷入了一些相对简单的问题,即如何将 abyte[]写入ListVector.

\n\n

ListVector当通过 a向 a 写入数据时BaseWriter.ListWriter,可以非常轻松地添加原始类型 \xe2\x80\x93 即,writer.integer().writeInt(i)writer.float4().writeFloat4(f)

\n\n

然而,对于像字节(或字符串)这样的可变长度类型,只剩下具有类似于以下签名的方法:

\n\n
public void write(VarBinaryHolder h);\n\npublic void writeVarBinary(int start, int end, ArrowBuf buffer);\n
Run Code Online (Sandbox Code Playgroud)\n\n

作为VarBinaryHolder一个简单生成的包装类,ArrowBuf甚至没有构造函数。

\n\n

我期待与VarBinaryVector提供的内容类似的东西,它有一个Mutator完全setSafe(int index, byte[] bytes)符合预期的方法。

\n\n

此外,似乎没有直接的方法将字节数组包装到 an 中ArrowBuf,我看到的唯一方法是将数据写入新的VarBinaryVector并随后获取底层ArrowBuf

\n\n

所以,我的审讯是:

\n\n
    \n
  • 难道只是 API 缺少一个方法,或者我什至不应该使用列表向量来存储字节1列表?
  • \n
  • 还有我错过的另一种明显的方法吗?
  • \n
\n\n
\n\n

1 AVarBinaryVector适合简单的情况,但我也希望能够嵌套列表。此外,列表包含多种类型的能力也很有用。

\n