我有一个Apache arrow数组,是通过读取文件创建的。
std::shared_ptr<arrow::Array> array;
PARQUET_THROW_NOT_OK(reader->ReadColumn(0, &array));
有没有一种方法可以将其转换为 std::vector 或其他本地数组类型在 C++ 中?
我有一个Apache arrow数组,是通过读取文件创建的。
std::shared_ptr<arrow::Array> array;
PARQUET_THROW_NOT_OK(reader->ReadColumn(0, &array));
您可以使用std::static_pointer_cast
将arrow::Array
转换为其它类型,例如将包含双精度浮点数的数组转换为arrow::DoubleArray
,然后使用Value
函数获取特定索引的值。例如:
auto arrow_double_array = std::static_pointer_cast<arrow::DoubleArray>(array);
std::vector<double> double_vector;
for (int64_t i = 0; i < array->length(); ++i)
{
double_vector.push_back(arrow_double_array->Value(i));
}
ColumnarTableToVector
函数的后半部分:https://arrow.apache.org/docs/cpp/examples/row_columnar_conversion.html。在该示例中,table->column(0)->chunk(0)
是一个std::shared_ptr<arrow::Array>
。arrow::StringArray
中的字符串使用GetString
函数而不是Value
函数进行访问。