Parquet 是一种列式存储文件格式。此函数使您能够从 R 写入 Parquet 文件。
用法
write_parquet(
x,
sink,
chunk_size = NULL,
version = "2.4",
compression = default_parquet_compression(),
compression_level = NULL,
use_dictionary = NULL,
write_statistics = NULL,
data_page_size = NULL,
use_deprecated_int96_timestamps = FALSE,
coerce_timestamps = NULL,
allow_truncated_timestamps = FALSE
)参数
- x
data.frame、RecordBatch 或 Table- sink
字符串文件路径、连接、URI 或 OutputStream,或文件系统中的路径 (
SubTreeFileSystem)- chunk_size
一次写入磁盘的数据行数。这直接对应于 Parquet 中每个行组的行数。如果为
NULL,将对最佳大小进行最佳猜测(基于列数和行数),但如果数据少于 2.5 亿个单元格(行 x 列),则使用总行数。- version
Parquet 版本:“1.0”、“2.4”(默认)、“2.6”或“最新”(目前等同于 2.6)。数值强制转换为字符。
- compression
压缩算法。默认“snappy”。请参阅详细信息。
- compression_level
压缩级别。含义取决于压缩算法
- use_dictionary
逻辑值:使用字典编码?默认
TRUE- write_statistics
逻辑值:包含统计信息?默认
TRUE- data_page_size
设置列块中数据页的近似编码大小(以字节为单位)的目标阈值。默认 1 MiB。
- use_deprecated_int96_timestamps
逻辑值:将时间戳写入已弃用的 INT96 Parquet 格式?默认
FALSE。- coerce_timestamps
将时间戳转换为特定分辨率。可以是
NULL、“ms”或“us”。默认NULL(不进行转换)- allow_truncated_timestamps
逻辑值:在将时间戳强制转换为特定分辨率时允许数据丢失。例如,如果将微秒或纳秒数据强制转换为“ms”时丢失,则不引发异常。默认
FALSE。
详情
由于格式的特性,Parquet 文件无法追加。如果您想使用 Parquet 格式但也想扩展数据集,可以写入额外的 Parquet 文件,然后将整个文件目录视为一个可查询的 数据集。有关示例,请参阅数据集文章。
参数 compression、compression_level、use_dictionary 和 write_statistics 支持各种模式
默认的
NULL表示参数未指定,C++ 库会为每个列使用适当的默认值(上面列出了默认值)单个未命名值(例如
compression的单个字符串)适用于所有列一个未命名向量,其大小与列数相同,用于按位置顺序指定每个列的值
一个命名向量,用于指定命名列的值,未提供时使用设置的默认值
compression 参数可以是以下任何一种(不区分大小写):“uncompressed”、“snappy”、“gzip”、“brotli”、“zstd”、“lz4”、“lzo”或“bz2”。只有“uncompressed”保证可用,但“snappy”和“gzip”几乎总是包含在内。请参阅 codec_is_available()。如果可用,则使用默认的“snappy”,否则使用“uncompressed”。要禁用压缩,请设置 compression = "uncompressed"。请注意,“uncompressed”列仍可能具有字典编码。
另请参阅
ParquetFileWriter 用于 Parquet 写入的更低级接口。
示例
tf1 <- tempfile(fileext = ".parquet")
write_parquet(data.frame(x = 1:5), tf1)
# using compression
if (codec_is_available("gzip")) {
tf2 <- tempfile(fileext = ".gz.parquet")
write_parquet(data.frame(x = 1:5), tf2, compression = "gzip", compression_level = 5)
}