跳到内容

作为在 Dataset 查询上调用 collect() 的替代方法,您可以使用此函数访问 Dataset 中的 RecordBatch 流。 这使您可以在 R 中执行更复杂的操作,这些操作可以处理数据块,而无需一次将整个 Dataset 保存在内存中。 您可以将 map_batches() 包含在 dplyr 管道中,并在 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 方法那样快。