【发布时间】:2018-05-16 04:12:51
【问题描述】:
我想过滤我的DF 中的一些行,保留列以 "startSubString" 开头的行并不包含角色'#'。
我可以使用 两个过滤器做我想做的事:
.filter( _!= col("theCol").contains("#"))
.filter( col("theCol").startsWith("startSubString"))
但想知道是否不能仅在一个过滤器中完成以获得更好的性能:
类似:
.filter(col("theCol").rlike("^(startSubString).*^[^@]"))
虽然这不起作用。我错过了什么?
【问题讨论】:
-
您可以随时使用 ||。
.filter( _!= col("theCol").contains("#") || col("theCol").startsWith("http"))不行吗? -
我会保持原样,我认为它比 1 个巨大的逻辑表达式更具可读性。 Spark的优化器无论如何都会结合过滤器,所以我认为你不会获得性能
标签: regex scala apache-spark dataframe filter