/ / ¿Por qué "s" con "rlike" en Spark SQL no funciona? - apache-spark-sql

¿Por qué "\ s" con "rlike" en Spark SQL no funciona? - apache-spark-sql

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 № 1

Como 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|    |
+---+----+