Является ли spark sql чувствительным к регистру? - PullRequest
0 голосов
/ 28 ноября 2018

Похоже, что spark sql чувствителен к регистру для похожих запросов, верно?

spark.sql("select distinct status, length(status)  from table")

Возвращает

Active|6

spark.sql("select distinct status  from table where status like '%active%'")

Не возвращает значения

spark.sql("select distinct status  from table where status like '%Active%'")

Возвращает

 Active

1 Ответ

0 голосов
/ 28 ноября 2018

Да, Spark чувствительна к регистру.Большинство РСУБД по умолчанию чувствительны к регистру для сравнения строк.Если вы хотите, чтобы регистр не учитывался, попробуйте rlike или преобразовать столбец в верхний / нижний регистр.

scala> val df = Seq(("Active"),("Stable"),("Inactive")).toDF("status")
df: org.apache.spark.sql.DataFrame = [status: string]

scala> df.createOrReplaceTempView("tbl")

scala> df.show
+--------+
|  status|
+--------+
|  Active|
|  Stable|
|Inactive|
+--------+


scala> spark.sql(""" select status from tbl where status like '%Active%' """).show
+------+
|status|
+------+
|Active|
+------+


scala> spark.sql(""" select status from tbl where lower(status) like '%active%' """).show
+--------+
|  status|
+--------+
|  Active|
|Inactive|
+--------+


scala>
...