2017-07-03 3 views
0

私は以下のようにHive Tableにデータフレームを挿入するsparkプログラムに取り組んでいます。Spark Version 2のHiveContext

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

SQLクエリ(スパーク・セッションを作成するときにハイブ・サポートが有効になっていることを確認してください)火災に直接ごSparkSession(通常sparkまたはssと呼ばれる)を使用することができます。

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

をしかし、私はこのことをお勧めします表記、あなたは臨時テーブル等を作成する必要はありません:

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

ああ! Sparkバージョン2xから、sparkSessionオブジェクトを直接使用して、既存のHiveテーブルにデータフレームを挿入できます。私の理解は正しいのですか? – Sidhartha

+0

@Sidharthaはい、 'SparkSession'はすべての主なエントリポイントです。' HiveContext'と 'SqlContext'はもう必要ありません –

関連する問題