You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何设置Arrow在找不到函数绑定时直接报错而非拉取数据到R?

问题

是否有办法阻止Arrow在找不到合适的函数绑定时默认将数据拉取到R中,使其不再显示‘pulling data into R’的警告信息,而是直接抛出错误?是否有可调整的选项实现该行为?已知Arrow文档中有可用绑定列表,但希望通过上述默认设置提升迭代实验效率,避免陷入Arrow框架外的长时间计算。

重现代码
library(arrow, warn.conflicts = FALSE)
library(dplyr, warn.conflicts = FALSE)
library(stringr)

sessionInfo()
#> R version 4.1.3 (2022-03-10)
#> Platform: x86_64-apple-darwin17.0 (64-bit)
#> Running under: macOS Big Sur/Monterey 10.16
#> 
#> Matrix products: default
#> BLAS:   /opt/R/4.1.3/Resources/lib/libRblas.0.dylib
#> LAPACK: /opt/R/4.1.3/Resources/lib/libRlapack.dylib
#> 
#> locale:
#> [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
#> 
#> attached base packages:
#> [1] stats     graphics  grDevices utils     datasets  methods   base     
#> 
#> other attached packages:
#> [1] stringr_1.4.1 dplyr_1.0.10  arrow_10.0.0 
#> 
#> loaded via a namespace (and not attached):
#>  [1] pillar_1.8.1      compiler_4.1.3    highr_0.9         R.methodsS3_1.8.2
#>  [5] R.utils_2.12.0    tools_4.1.3       digest_0.6.29     bit_4.0.4        
#>  [9] evaluate_0.16     lifecycle_1.0.2   tibble_3.1.8      R.cache_0.16.0   
#> [13] pkgconfig_2.0.3   rlang_1.0.6       reprex_2.0.2      DBI_1.1.3        
#> [17] cli_3.4.1         rstudioapi_0.14   yaml_2.3.5        xfun_0.32        
#> [21] fastmap_1.1.0     withr_2.5.0       styler_1.7.0      knitr_1.40       
#> [25] generics_0.1.3    fs_1.5.2          vctrs_0.4.2       bit64_4.0.5      
#> [29] tidyselect_1.1.2  glue_1.6.2        R6_2.5.1          fansi_1.0.3      
#> [33] rmarkdown_2.16    purrr_0.3.4       magrittr_2.0.3    htmltools_0.5.3  
#> [37] assertthat_0.2.1  utf8_1.2.2        stringi_1.7.8     R.oo_1.25.0

df <- tibble(
  date = c("28-Aug-21", "11-Mar-19")
)

df <- arrow::arrow_table(df)

df %>% 
  mutate(date = str_remove(date, "\\d{2}$"))
#> Warning: Expression str_remove(date, "\\d{2}$") not supported in Arrow; pulling
#> data into R
#> # A tibble: 2 × 1
#>   date   
#>   <chr>  
#> 1 28-Aug-
#> 2 11-Mar-

Created on 2022-11-08 with reprex v2.0.2

解决方案

可以通过设置Arrow的执行选项allow_r_kernel为FALSE来实现需求:

  • 该选项默认值为TRUE,允许Arrow在遇到不支持的表达式时降级到R内核处理(即拉取数据到R并发出警告)
  • 设置为FALSE后,任何无法在Arrow引擎中执行的表达式都会直接抛出错误,不再拉取数据到R

具体代码示例:

library(arrow, warn.conflicts = FALSE)
library(dplyr, warn.conflicts = FALSE)
library(stringr)

# 设置执行选项,禁止降级到R内核
arrow::set_execution_options(allow_r_kernel = FALSE)

df <- tibble(
  date = c("28-Aug-21", "11-Mar-19")
) %>% arrow::arrow_table()

# 此时运行不支持的表达式会直接报错
df %>% 
  mutate(date = str_remove(date, "\\d{2}$"))

运行上述代码会抛出类似如下的错误:

Error: Expression str_remove(date, "\\d{2}$") not supported in Arrow
Call collect() first to pull data into R.

内容的提问来源于stack exchange,提问作者andreranza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 22:30:51