Arrow提供了一系列的C++接口,抽象了输入/输出操作的具体细节。它们操作无类型二进制数据流。这些抽象用于各种目的,如读取CSV或Parquet数据,传输IPC流等。
另请参见
输入/输出设施的API参考。
读取二进制数据
用于读取二进制数据的接口有两种类型:
顺序读取:InputStream接口提供了Read方法;建议将其读取到Buffer中,因为在某些情况下可以避免内存复制。
随机访问读取:RandomAccessFile接口提供了额外的定位功能,最重要的是ReadAt方法,允许从多个线程并行读取。
可用的具体实现包括内存读取、无缓冲文件读取、内存映射文件读取、带缓冲读取、压缩读取。
写入二进制数据
写入二进制数据主要通过OutputStream接口完成。
可用的具体实现包括内存写入、无缓冲文件写入、内存映射文件写入、带缓冲写入、压缩写入。
文件系统
文件系统接口允许对各种数据存储后端进行抽象访问,如本地文件系统或S3存储桶。它提供输入和输出流以及目录操作。
文件系统接口公开了底层数据存储的简化视图。数据路径表示为抽象路径,即使在Windows上也是以/分隔的,并且不应包含特殊的路径组件,如.和...如果底层存储支持符号链接,它们将自动解引用。仅提供有关文件条目的基本元数据,如文件大小和修改时间。
可用的具体实现包括本地文件系统访问、HDFS、兼容Amazon S3的存储和Google Cloud存储。
注意
使用文件系统的任务通常在I/O线程池上运行。对于支持高并发级别的文件系统,您可能会受益于增加I/O线程池的大小。