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
- 將所有有效值用引號括起來。Null 值不加引號。如果推斷結構描述,可能會導致讀取器將所有值解譯為字串。none
- 不要將任何值用引號括起來。防止值包含引號 (")、單元格定界符 (,) 或行尾符號 (\r, \n)(遵循 RFC4180)。如果值包含這些字元,則嘗試寫入時會導致錯誤。