跳到內容

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}.<預設副檔名>"

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 - 將所有有效值用引號括起來。Null 值不加引號。如果推斷結構描述,可能會導致讀取器將所有值解譯為字串。

  • none - 不要將任何值用引號括起來。防止值包含引號 (")、單元格定界符 (,) 或行尾符號 (\r, \n)(遵循 RFC4180)。如果值包含這些字元,則嘗試寫入時會導致錯誤。

輸入的 dataset,不可見地傳回。

另請參閱