我是新来的火花,我正在尝试加入来自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中执行它是正确的方法吗?
提前感谢!!
答案 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")