write_*_dataset() 是围绕 write_dataset 的一系列封装函数,允许轻松切换用于写入数据集的函数。
用法
write_delim_dataset(
dataset,
path,
partitioning = dplyr::group_vars(dataset),
basename_template = "part-{i}.txt",
hive_style = TRUE,
existing_data_behavior = c("overwrite", "error", "delete_matching"),
max_partitions = 1024L,
max_open_files = 900L,
max_rows_per_file = 0L,
min_rows_per_group = 0L,
max_rows_per_group = bitwShiftL(1, 20),
col_names = TRUE,
batch_size = 1024L,
delim = ",",
na = "",
eol = "\n",
quote = c("needed", "all", "none")
)
write_csv_dataset(
dataset,
path,
partitioning = dplyr::group_vars(dataset),
basename_template = "part-{i}.csv",
hive_style = TRUE,
existing_data_behavior = c("overwrite", "error", "delete_matching"),
max_partitions = 1024L,
max_open_files = 900L,
max_rows_per_file = 0L,
min_rows_per_group = 0L,
max_rows_per_group = bitwShiftL(1, 20),
col_names = TRUE,
batch_size = 1024L,
delim = ",",
na = "",
eol = "\n",
quote = c("needed", "all", "none")
)
write_tsv_dataset(
dataset,
path,
partitioning = dplyr::group_vars(dataset),
basename_template = "part-{i}.tsv",
hive_style = TRUE,
existing_data_behavior = c("overwrite", "error", "delete_matching"),
max_partitions = 1024L,
max_open_files = 900L,
max_rows_per_file = 0L,
min_rows_per_group = 0L,
max_rows_per_group = bitwShiftL(1, 20),
col_names = TRUE,
batch_size = 1024L,
na = "",
eol = "\n",
quote = c("needed", "all", "none")
)参数
- dataset
数据集(Dataset)、记录批次(RecordBatch)、表(Table)、
arrow_dplyr_query或data.frame。如果是arrow_dplyr_query,则会评估查询并写入结果。这意味着您可以根据需要使用select()、filter()、mutate()等函数在写入数据之前对其进行转换。- path
字符串路径、URI 或
SubTreeFileSystem,引用要写入的目录(如果目录不存在,将创建它)- partitioning
Partitioning或一个字符向量,其中包含要用作分区键的列(将作为路径段写入)。默认为使用当前的group_by()列。- basename_template
要写入的文件名的字符串模板。必须包含
"{i}",它将被替换为自增整数以生成数据文件的基本名称。例如,"part-{i}.arrow"将生成"part-0.arrow", ...。如果未指定,则默认为"part-{i}.<默认扩展名>"。- hive_style
逻辑值:将分区段写入为 Hive 样式 (
key1=value1/key2=value2/file.ext) 还是仅写入裸值。默认为TRUE。- existing_data_behavior
当目标目录中已有数据时要使用的行为。必须是 "overwrite"、"error" 或 "delete_matching" 之一。
"overwrite"(默认值)表示创建的任何新文件将覆盖现有文件
"error" 表示如果目标目录不为空,则操作将失败
"delete_matching" 表示写入器将删除任何现有分区,如果数据将写入这些分区,并将保留没有写入数据分区。
- max_partitions
任何批次可以写入的最大分区数。默认为 1024L。
- max_open_files
在写入操作期间可以打开的最大文件数。如果大于 0,则这将限制可以保持打开的最大文件数。如果尝试打开太多文件,则最近最少使用的文件将被关闭。如果此设置过低,您可能会将数据碎片化为许多小文件。默认值为 900,这也允许扫描器在达到默认 Linux 限制 1024 之前打开一些文件。
- max_rows_per_file
每个文件的最大行数。如果大于 0,则这将限制任何单个文件中放置的行数。默认值为 0L。
- min_rows_per_group
当累计达到此行数时,将行组写入磁盘。默认为 0L。
- max_rows_per_group
单个组中允许的最大行数,当超出此行数时,它将被分割,并将下一组行写入下一个组。此值必须设置为大于
min_rows_per_group。默认值为 1024 * 1024。- col_names
是否写入带有列名的初始标题行。
- batch_size
一次处理的最大行数。默认为 1024L。
- delim
用于分隔值的分隔符。对于
write_delim_dataset()和write_csv_dataset()默认为",",对于write_tsv_dataset()默认为"\t"。对于write_tsv_dataset()无法更改。- na
一个字符向量,其中包含要解释为缺失值的字符串。此字符串中不允许有引号。默认值为空字符串
""。- eol
用于结束行的行尾字符。默认为
"\n"。- quote
如何处理包含需要引用字符的字段。
needed- 用引号将所有需要引用的字符串和二进制值括起来,因为它们的 CSV 渲染本身可能包含引号(默认值)all- 用引号将所有有效值括起来。空值不带引号。如果推断出模式,可能会导致读取器将所有值解释为字符串。none- 不将任何值用引号括起来。防止值包含引号 (")、单元格分隔符 (,) 或行尾 (\r, \n)(遵循 RFC4180)。如果值包含这些字符,则在尝试写入时会导致错误。