Spark Scala:如何在 LIKE 语句中使用通配符作为文字
Spark Scala: How to use wild card as literal in a LIKE statement
我有一个简单的用例。
我必须在 LIKE 条件下使用通配符作为值。
我正在尝试从包含 _A_
的字符串列中过滤掉记录。
它是一个简单的 LIKE
语句用例。但是由于 _
in _A_
是一个通配符,LIKE
会抛出错误的结果。
在SQL中我们可以使用ESCAPE来实现。
我怎样才能在 Spark 中实现这一点?
我没试过正则表达式。想知道是否还有其他更简单的解决方法
我在 Scala 中使用 Spark 1.5。
提前致谢!
如果您可以将 Spark 与 Dataframe 一起使用,代码将像
一样简单
object EscapeChar {
def main(args: Array[String]): Unit = {
val spark = Constant.getSparkSess
import spark.implicits._
val df = List("_A_","A").toDF()
df.printSchema()
df.filter($"value".contains("_A_")).show()
}
}
对于这种情况,您可以使用 .contains
(或)like
(或)rlike
函数,并使用 \
在 中转义 _
喜欢
val df=Seq(("apo_A_"),("asda"),("aAc")).toDF("str")
//using like
df.filter(col("str").like("%\_A\_%")).show()
//using rlike
df.filter(col("str").rlike(".*_A_.*")).show()
//using contains
df.filter(col("str").contains("_A_")).show()
//+------+
//| str|
//+------+
//|apo_A_|
//+------+
我有一个简单的用例。 我必须在 LIKE 条件下使用通配符作为值。
我正在尝试从包含 _A_
的字符串列中过滤掉记录。
它是一个简单的 LIKE
语句用例。但是由于 _
in _A_
是一个通配符,LIKE
会抛出错误的结果。
在SQL中我们可以使用ESCAPE来实现。 我怎样才能在 Spark 中实现这一点?
我没试过正则表达式。想知道是否还有其他更简单的解决方法
我在 Scala 中使用 Spark 1.5。
提前致谢!
如果您可以将 Spark 与 Dataframe 一起使用,代码将像
一样简单object EscapeChar {
def main(args: Array[String]): Unit = {
val spark = Constant.getSparkSess
import spark.implicits._
val df = List("_A_","A").toDF()
df.printSchema()
df.filter($"value".contains("_A_")).show()
}
}
对于这种情况,您可以使用 .contains
(或)like
(或)rlike
函数,并使用 \
在 中转义 _
喜欢
val df=Seq(("apo_A_"),("asda"),("aAc")).toDF("str")
//using like
df.filter(col("str").like("%\_A\_%")).show()
//using rlike
df.filter(col("str").rlike(".*_A_.*")).show()
//using contains
df.filter(col("str").contains("_A_")).show()
//+------+
//| str|
//+------+
//|apo_A_|
//+------+