sparksql--hive

//與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")

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章