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

时间:2018-06-01 19:01:43

标签: scala apache-spark dataframe hivecontext

我是新来的火花,我正在尝试加入来自Scala的hive中的两个表 代码:

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中执行它是正确的方法吗?

提前感谢!!

1 个答案:

答案 0 :(得分:3)

由于您使用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")