首页 > 解决方案 > 为什么我在运行 SQL spark 时只得到“OK”而不是表结果?

问题描述

我想从 fireIncidents 表中获取 2016 年 4 月 4 日发生的所有事件,但是当我输入以下代码时,除了“OK”之外什么都没有返回,但是当我删除 where 子句时,表会返回。环境是 DataBricks。

Select *
From fireIncidents
Where 'Incident Date'="04/04/2016"

标签: sqlapache-spark

解决方案


这背后的原因是 Spark(与大多数 SQL 引擎一样)实际上评估'Incident Date' = "04/04/2016"false因为它比较了 2 个字符串值。因此查询将始终返回 0 行。您可以通过以下方式轻松检查:

spark.sql("""Select 'Incident Date'="04/04/2016"""").show()

+----------------------------+
|(Incident Date = 04/04/2016)|
+----------------------------+
|                       false|
+----------------------------+

您需要像这样重写您的查询:

SELECT  *
FROM    fireIncidents
WHERE   `Incident Date` = '04/04/2016'

请注意使用反引号`来转义列名,因为它包含空格。


推荐阅读