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