/ / Защо “s” с “rlike” в Spark SQL не работи? - apache-spark-sql

Защо "\ s" с "rlike" в Spark SQL не работи? - apache-spark-sql

Странно е, че "s" не работи, като кода по-долу:

scala> case class Item(id: Int, name:String)
defined class Item

scala> val df = Seq((1, "hello"), (2, " "))
df: Seq[(Int, String)] = List((1,hello), (2," "))

scala> df.toDF("id", "name").as[Item].filter("name rlike "\s"").show()
+---+----+
| id|name|
+---+----+
+---+----+

Отговори:

0 за отговор № 1

Като Описан е LanguageManual UDF, rlike трябва двойно избяга модел \s.

Докато е в искровата обвивка, Скала е избягала веднъж. Така повече е необходимо:

scala> df.toDF("id", "name").as[Item].filter("name rlike "\\s"").show()
+---+----+
| id|name|
+---+----+
|  2|    |
+---+----+

scala> df.toDF("id", "name").as[Item].filter("name rlike "\\w"").show()
+---+-----+
| id| name|
+---+-----+
|  1|hello|
+---+-----+

Или използвайте низове без избягване, като:

scala> val er = """name rlike "\s""""
er: String = name rlike "\s"

scala> df.toDF("id", "name").as[Item].filter(er).show()
+---+----+
| id|name|
+---+----+
|  2|    |
+---+----+