Spark版本2中的HiveContext

时间:2017-07-03 08:45:01

标签: apache-spark hive

我正在开发一个将数据框插入Hive Table的spark程序,如下所示。

import org.apache.spark.sql.SaveMode
import org.apache.spark.sql._
val hiveCont =  val hiveCont = new org.apache.spark.sql.hive.HiveContext(sc)
val partfile = sc.textFile("partfile")
val partdata = partfile.map(p => p.split(","))
case class partc(id:Int, name:String, salary:Int, dept:String, location:String)
val partRDD  = partdata.map(p => partc(p(0).toInt, p(1), p(2).toInt, p(3), p(4)))
val partDF   = partRDD.toDF()
partDF.registerTempTable("party")
hiveCont.sql("insert into parttab select id, name, salary, dept from party")

我知道Spark V2已经问世了,我们可以在其中使用SparkSession对象。 我们可以使用SparkSession对象直接将数据框插入到Hive表中,还是我们还必须在版本2中使用HiveContext?任何人都可以让我知道版本与HiveContext的主要区别是什么?

1 个答案:

答案 0 :(得分:1)

您可以直接使用SparkSession(通常称为sparkss)来启动SQL查询(确保在创建spark会话时启用了hive-support): / p>

spark.sql("insert into parttab select id, name, salary, dept from party")

但我建议使用这种表示法,你不需要创建临时表等:

partDF
.select("id","name","salary","dept")
.write.mode("overwrite")
.insertInto("parttab")