跳至内容

作为对 Dataset 查询调用 collect() 的替代方法,您可以使用此函数访问 Dataset 中的 RecordBatch 流。这使您能够在 R 中执行更复杂的运算,这些运算在数据块上进行,而无需一次将整个 Dataset 保存在内存中。您可以在 dplyr 管道中包含 map_batches(),并在之后对 Arrow 中的数据流执行其他 dplyr 方法。

用法

map_batches(X, FUN, ..., .schema = NULL, .lazy = TRUE, .data.frame = NULL)

参数

X

一个 Datasetarrow_dplyr_query 对象,由 Dataset 上的 dplyr 方法返回。

FUN

要应用于每个批次的函数或 purrr 风格的 lambda 表达式。它必须返回一个 RecordBatch 或可通过 `as_record_batch()` 强制转换为 RecordBatch 的对象。

...

传递给 FUN 的其他参数

.schema

一个可选的 schema()。如果为 NULL,则将从第一个批次推断出 schema。

.lazy

使用 TRUE 在从结果读取批次时延迟评估 FUN;使用 FALSE 在返回读取器之前对所有批次评估 FUN

.data.frame

已弃用参数,已忽略

返回值

一个 arrow_dplyr_query

详情

这属于实验性功能,不建议在生产环境中使用。它也是单线程的,在 R 中而不是 C++ 中运行,因此它不会像核心 Arrow 方法那样快。