Чтение CSV из std :: vector ‹unsigned char› с помощью Apache Arrow

Я пытаюсь прочитать входной формат csv с помощью стрелки Apache. В примере здесь упоминается, что ввод должен быть InputStream, однако в моем случае у меня просто std :: vector беззнаковых символов. Можно ли разобрать это с помощью стрелки apache? Я проверил интерфейс ввода-вывода, чтобы узнать, есть ли структура данных в памяти безуспешно. Для удобства я скопировал сюда пример кода, а также свои входные данные:

#include "arrow/csv/api.h"

{
   // ...
   std::vector<unsigned char> data;
   arrow::io::IOContext io_context = arrow::io::default_io_context();
   // how can I fit the std::vector to the input stream? 
   std::shared_ptr<arrow::io::InputStream> input = ...;

   auto read_options = arrow::csv::ReadOptions::Defaults();
   auto parse_options = arrow::csv::ParseOptions::Defaults();
   auto convert_options = arrow::csv::ConvertOptions::Defaults();

   // Instantiate TableReader from input stream and options
   auto maybe_reader =
     arrow::csv::TableReader::Make(io_context,
                                   input,
                                   read_options,
                                   parse_options,
                                   convert_options);
   if (!maybe_reader.ok()) {
      // Handle TableReader instantiation error...
   }
   std::shared_ptr<arrow::csv::TableReader> reader = *maybe_reader;

   // Read table from CSV file
   auto maybe_table = reader->Read();
   if (!maybe_table.ok()) {
      // Handle CSV read error
      // (for example a CSV syntax error or failed type conversion)
   }
   std::shared_ptr<arrow::Table> table = *maybe_table;
}

Любая помощь будет оценена по достоинству!


person dkoutsou    schedule 22.05.2021    source источник


Ответы (1)


Список документов интерфейса ввода-вывода BufferReader, работающий как входной поток в памяти. Хотя он не указан в документации, он может быть сконструирован из указателя и размера, который позволит вам использовать ваш vector<char>.

person li.davidm    schedule 22.05.2021