如何使用 sparklyr 过滤部分匹配

Posted

技术标签:

【中文标题】如何使用 sparklyr 过滤部分匹配【英文标题】:How to filter on partial match using sparklyr 【发布时间】:2018-02-27 14:13:27 【问题描述】:

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

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

在 spark 数据帧上运行该代码给了我:

错误:org.apache.spark.sql.AnalysisException:未定义函数:'GREPL'。该函数既不是注册的临时函数,也不是在数据库“project_eftpos_failure”中注册的永久函数。第 5 行第 7 行

【问题讨论】:

【参考方案1】:

与标准 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")

【讨论】:

完美,如此简单:O 我很惊讶我没有在其他任何地方或此处找到该列表:spark.rstudio.com/articles/guides-dplyr.html#sql-translation 感谢@rookieerror 的回答,但链接现在已失效。 您可以使用 Hive 运算符和用户定义函数 (UDF) cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF

以上是关于如何使用 sparklyr 过滤部分匹配的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 sparklyr 为 Apache Spark 实现 Stanford CoreNLP 包装器?

R - 如何使用 sparklyr 复制火花数据框中的行

如何在 Sparklyr 中正确使用特征转换函数

Sparklyr/Hive:如何正确使用正则表达式(regexp_replace)?

如何在R中使用sparklyr打开“GZ FILE”?

同时使用 SparkR 和 Sparklyr