如何使用 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 包装器?