跳至内容

Feather 为数据框提供二进制列式序列化。它旨在使读取和写入数据框更高效,并简化数据在不同数据分析语言之间的共享。write_feather() 可以写入 Feather 版本 1 (V1) 和版本 2 (V2),前者是 2016 年开始提供的遗留版本,后者是 Apache Arrow IPC 文件格式。默认版本为 V2。V1 文件与 Arrow IPC 文件不同,缺少许多功能,例如存储所有 Arrow 数据类型和压缩支持。write_ipc_file() 只能写入 V2 文件。

用法

write_feather(
  x,
  sink,
  version = 2,
  chunk_size = 65536L,
  compression = c("default", "lz4", "lz4_frame", "uncompressed", "zstd"),
  compression_level = NULL
)

write_ipc_file(
  x,
  sink,
  chunk_size = 65536L,
  compression = c("default", "lz4", "lz4_frame", "uncompressed", "zstd"),
  compression_level = NULL
)

参数

x

data.frameRecordBatchTable

sink

字符串文件路径、连接、URI 或 OutputStream,或文件系统 (SubTreeFileSystem) 中的路径

version

整数 Feather 文件版本,版本 1 或版本 2。版本 2 为默认版本。

chunk_size

对于 V2 文件,文件中的每个数据块应包含的行数。当需要更快的随机行访问时,请使用较小的 chunk_size。默认值为 64K。此选项不支持 V1。

compression

要使用的压缩编解码器名称(如果有)。如果 Arrow C++ 库的构建中提供了 LZ4,则默认值为 "lz4",否则为 "uncompressed"。 "zstd" 是另一个可用的编解码器,通常具有更好的压缩率,但读取和写入性能较慢。 "lz4" 是 "lz4_frame" 编解码器的简写。有关详细信息,请参见 codec_is_available()TRUEFALSE 也可分别用于代替 "default" 和 "uncompressed"。此选项不支持 V1。

compression_level

如果 compression 为 "zstd",则可以指定整数压缩级别。如果省略,则使用压缩编解码器的默认压缩级别。

输入 x,不可见。请注意,如果 sinkOutputStream,则流将保持打开状态。

另请参见

RecordBatchWriter,用于写入 Arrow IPC 数据的低级访问。

Schema,用于了解模式和元数据处理信息。

示例

# We recommend the ".arrow" extension for Arrow IPC files (Feather V2).
tf1 <- tempfile(fileext = ".feather")
tf2 <- tempfile(fileext = ".arrow")
tf3 <- tempfile(fileext = ".arrow")
on.exit({
  unlink(tf1)
  unlink(tf2)
  unlink(tf3)
})
write_feather(mtcars, tf1, version = 1)
write_feather(mtcars, tf2)
write_ipc_file(mtcars, tf3)