Hi Wes, Thanks for the quick reply! To be clear, the usage I'm working on needs to own both the Open FileDescriptor and corresponding mapped memory. In other words ...
SAS component does both open() and mmap() which could be for READ or WRITE. -> Calls low-level Parquet APIs to read an existing file or write a new one. The open() and mmap() flags are guaranteed to be correct. At some later point SAS component does an unmap() and close(). -Brian On 3/14/19, 3:42 PM, "Wes McKinney" <wesmck...@gmail.com> wrote: hi Brian, This is mostly an Arrow platform question so I'm copying the Arrow mailing list. You can open a file using an existing file descriptor using ReadableFile::Open https://github.com/apache/arrow/blob/master/cpp/src/arrow/io/file.h#L145 The documentation for this function says: "The file descriptor becomes owned by the ReadableFile, and will be closed on Close() or destruction." If you want to do the equivalent thing, but using memory mapping, I think you'll need to add a corresponding API to MemoryMappedFile. This is more perilous because of the API requirements of mmap -- you need to pass the right flags and they may need to be the same flags that were passed when opening the file descriptor, see https://github.com/apache/arrow/blob/master/cpp/src/arrow/io/file.cc#L378 and https://github.com/apache/arrow/blob/master/cpp/src/arrow/io/file.cc#L476 - Wes On Thu, Mar 14, 2019 at 1:47 PM Brian Bowman <brian.bow...@sas.com> wrote: > > The ReadableFile class (arrow/io/file.cc) has utility methods where a FileDescriptor is either passed in or returned, but I don’t see how this surfaces through the API. > > Is there a way for application code to control the open lifetime of mmap()’d Parquet files by passing an already open FileDescriptor to Parquet low-level API open/close methods? > > Thanks, > > Brian >