如何使用 sparklyr 过滤部分匹配项

How to filter on partial match using sparklyr

我是 sparklyr 的新手(但熟悉 spark 和 pyspark),我有一个非常基本的问题。我正在尝试根据部分匹配过滤列。在 dplyr 中,我会这样写我的操作:

businesses %>%
  filter(grepl('test', biz_name)) %>%
  head

运行 spark 数据帧上的代码却给了我:

Error: org.apache.spark.sql.AnalysisException: Undefined function: 'GREPL'. This function is neither a registered temporary function nor a permanent function registered in the database 'project_eftpos_failure'.; line 5 pos 7

与标准 Spark 相同,您可以使用 rlike(Java 正则表达式):

df <- copy_to(sc, iris) 

df %>% filter(rlike(Species, "osa"))

# or anchored
df %>% filter(rlike(Species, "^.*osa.*$"))

like(简单SQL正则表达式):

df %>% filter(like(Species, "%osa%"))

这两种方法也可以与后缀符号一起使用

df %>% filter(Species %rlike%  "^.*osa.*$")

df %>% filter(Species %like% "%osa%")

分别

详情见vignette("sql-translation")