跳至内容

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

DatasetRecordBatchTablearrow_dplyr_querydata.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}.<default extension>"

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)。如果值包含这些字符,则尝试写入时会导致错误。

返回值

输入 dataset,不可见。

另请参阅