Как написать простой развернутый байтовый массив в Apache-Arrow ListWriter

В настоящее время я пишу некоторый код для преобразования произвольной структуры данных в векторы Apache Arrow и застрял на чем-то относительно простом, а именно, как написать byte[] к ListVector,

При записи данных в ListVector через BaseWriter.ListWriter Примитивные типы могут быть добавлены очень легко - т.е. 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 будет делать для простых случаев, но я хочу иметь возможность также вкладывать списки. Кроме того, способность списка содержать несколько типов также может быть полезна.

0 ответов

Другие вопросы по тегам