0

我是 spark 新手,我正在尝试从 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 中执行此操作是否正确?

提前致谢!!

4

1 回答 1

4

由于您使用 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")
于 2018-06-01T19:04:28.153 回答