Apache Spark SQL:自动内连接?

Posted

技术标签:

【中文标题】Apache Spark SQL:自动内连接?【英文标题】:Apache Spark SQL: Automatic Inner Join? 【发布时间】:2016-02-22 22:39:11 【问题描述】:

所以我遇到了一个奇怪的情况。

每当我使用 inner join 语句运行 sqlContext.sql 时,我实际上会收到一个错误,但是当我阅读该错误时,看起来 Spark 在尝试执行 on 时已经自动加入了我的两个单独的表声明。

表 1: 患者编号,代码

表2: 患者 ID,日期

Select code, date
from Table1
inner join Table2
on Table1.patient_id = Table2.patient_id <- exception shows the table is joined already by this point.

对这种行为有什么想法吗?

错误看起来像这样

org.apache.spark.sql.AnalysisException: cannot resolve 'Table2.patient_id' given input columns [patient_id, code, date]

【问题讨论】:

你能把错误信息也贴出来吗? 更新错误信息 你能把代码贴出来吗?我们也许可以帮助您... 【参考方案1】:

我认为你的程序中有错字。

但是,您可以执行以下操作:

tableOneDF.join(tableTwoDF, tableOneDF("patient_id") === tableTwoDF("patient_id"), "inner").select("code", "date") 

而 tableOneDF 和 tableTwoDF 是在两个表之上创建的两个数据框。

尝试一下,看看它是否仍然会发生。

【讨论】:

是的,我找到了,谢谢。列名略有不匹配,但这是多么奇怪的错误...

以上是关于Apache Spark SQL:自动内连接?的主要内容,如果未能解决你的问题,请参考以下文章

MySql表的内连和外连

SQL 内连接到左连接表

从 Docker 容器内连接到 SQL Server Express 会导致评估密码时出错

MySQL 表的内连和外连

MySQL基础中级进阶

两个 Spark DataFrame 的简单连接因“org.apache.spark.sql.AnalysisException:无法解析列名”而失败