Hello Eugene,
On Mon, 20 Sep 2021 09:33:26 +0000 "Weber, Eugene F Jr CIV (USA)" <[email protected]> wrote: > > I've gone through the documentation but I'm still unclear about the usage of > buffers with respect to arrays. > > "A Buffer encapsulates a pointer and data size .... Buffers are untyped: they > simply denote a physical memory area" > > "The central type in Arrow is the class arrow::Array. An array represents a > known-length sequence of values all having the same type. Internally, those > values are represented by one or several buffers ...." > > The Array section then goes on to explain how to build Arrays with the > ArrayBuilder base class, and concrete subclasses. There doesn't appear to be > any need to allocate buffer space first. There is also a BufferBuilder class. > But since there does not appear to be a way associate a created buffer with > an array, I don't understand when explicit buffer creation would be used? The C++ documentation is unfortunately incomplete. Using ArrayBuilder subclasses is one way of creating arrays if you want to populate them with logical values (e.g. int64_t values for a Int64Array). But you can also create buffers directly and wrap them inside a ArrayData container: https://github.com/apache/arrow/blob/master/cpp/src/arrow/array/data.h#L73 (this is useful if e.g. you want your array to point to *existing* memory) Then you can call MakeArray to get an actual Array subclass from the ArrayData container: https://github.com/apache/arrow/blob/master/cpp/src/arrow/array/util.h#L38 Regards Antoine.
