//與hive表進行連接:
// 1.一種通過conf.set 設置或直接將hive配置hive-site.xml文件拷貝工程
// 2.加載mysql驅動
//從hive中讀取數據,驅動不是SQLContext,而是HiveContext
val hsc=new HiveContext(sc)
//執行hql語句
hsc.sql("select * from hive.person").show()
//執行的臨時表
val df=hsc.sql("select * from hive.person")
df.registerTempTable("t_per")
hsc.sql("select * from t_per").show()
//把結果輸出到hive中
val sourceRDD= sc.parallelize(List((1,"wang",12),(2,"afds",34)))
val id= StructField("id",IntegerType,true)
val name= StructField("name",StringType,true)
val age= StructField("age",IntegerType,true)
val st=StructType(List(id,name,age))
val mapRDD= sourceRDD.map(
line=>{
Row( line._1,
line._2,
line._3)
}
)
hsc.createDataFrame(mapRDD,st).registerTempTable("per")
val hiveDF=hsc.sql("select * from per")
//輸出到hive,hive表自動創建,如果表存在,報錯:Exception in thread "main" org.apache.spark.sql.AnalysisException: Table `hive`.`person` already exists.;
hiveDF.write.saveAsTable("hive.person")