列不是 org.apache.spark.sql.DataFrame 的成员

column is not a member of org.apache.spark.sql.DataFrame

我是 spark 的新手,我正在尝试从 Scala 加入配置单元中存在的两个表 代码:

import org.apache.spark.sql._
import sqlContext.implicits._

val hiveContext = new org.apache.spark.sql.hive.HiveContext(sc)

val csp = hiveContext.sql("select * from csp")
val ref = hiveContext.sql("select * from ref_file")

val csp_ref_join = csp.join(ref, csp.model_id == ref.imodel_id , "LEFT_OUTER")

但是对于上面的连接我得到了错误:

<console>:54: error: value model_id is not a member of org.apache.spark.sql.DataFrame
         val csp_ref_join = csp.join(ref, csp.model_id == ref.imodel_id , "LEFT_OUTER")

如果不是哪里出了问题,加入配置单元表的方法是否正确?

还有一个问题……在 Scala 中连接 Hive 表与在 Hive 中连接相同 考虑到性能,哪种方法更好? 使用 hiveContext 在 Scala 中执行此操作是否正确?

提前致谢!!

由于您使用 Scala,因此不能使用点语法。而且它是 === 而不是 ==

csp.join(ref_file, csp("model_id") === ref_file("icmv_model_id"), "leftouter")

或(如果没有名称冲突):

csp.join(ref_file, $"model_id" === $"icmv_model_id", "leftouter")

或(同上条件):

import org.apache.spark.sql.functions.col

csp.join(ref_file, col("model_id") === col("icmv_model_id"), "leftouter")