Es extraño que la "s" no funcione, como se indica en el siguiente código:
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|
+---+----+
+---+----+
Respuestas
0 para la respuesta № 1Como LanguageManual UDF descrito, rlike
necesita doble patrón de escape \s
.
Mientras que en la cáscara de la chispa, Scala ha escapado una vez. Mucho mas es necesario:
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|
+---+-----+
O usa cuerdas sin escape, como:
scala> val er = """name rlike "\s""""
er: String = name rlike "\s"
scala> df.toDF("id", "name").as[Item].filter(er).show()
+---+----+
| id|name|
+---+----+
| 2| |
+---+----+