基于 Databricks Spark SQL 子查询的查询抛出 TreeNodeException
Posted
技术标签:
【中文标题】基于 Databricks Spark SQL 子查询的查询抛出 TreeNodeException【英文标题】:Databricks Spark SQL subquery based query throws TreeNodeException 【发布时间】:2020-07-29 10:37:14 【问题描述】:我在 databricks 笔记本中运行一个非常简单的查询,其中涉及一个子查询。
select recorddate, count(*)
from( select record_date as recorddate, column1
from table1
where record_date >= date_sub(current_date(), 1)
)t
group by recorddate
order by recorddate
我得到以下异常: SQL 语句错误:package.TreeNodeException:绑定属性,树:recorddate
当删除 order by 子句时,查询运行良好。我看到一些帖子谈论类似的问题,但完全相同。这是一种已知的行为吗?有什么解决方法/解决方法吗?
【问题讨论】:
在子查询中我看到别名列,record_date as date 这是一个用存根替换实际表名和列名的错字。现在修好了。 你可以试试不给列加别名吗? 【参考方案1】:对我来说效果很好,(spark = 2.4.5)我认为问题有所不同-
val df = spark.sql("select current_date() as record_date, '1' column1")
df.show(false)
/**
* +-----------+-------+
* |record_date|column1|
* +-----------+-------+
* |2020-07-29 |1 |
* +-----------+-------+
*/
df.createOrReplaceTempView("table1")
spark.sql(
"""
|select recorddate, count(*)
|from( select record_date as recorddate, column1
| from table1
| where record_date >= date_sub(current_date(), 1)
| )t
|group by recorddate
|order by recorddate
|
""".stripMargin)
.show(false)
/**
* +----------+--------+
* |recorddate|count(1)|
* +----------+--------+
* |2020-07-29|1 |
* +----------+--------+
*/
【讨论】:
我在 databricks 笔记本中使用直接 SQL 查询执行此操作。唔。这可能是数据块的特定问题。不确定。以上是关于基于 Databricks Spark SQL 子查询的查询抛出 TreeNodeException的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Spark sql 在 Databricks 中使用内部联接更新 Databricks Delta 表
如果 Databricks 或 Spark SQL 中存在表,则插入