数据源:
- student
1,科比,40
2,詹姆斯,37
3,保罗,38
4,安东尼,38
5,库里,33
- score
1,科比,34507
2,詹姆斯,35404
3,保罗,21098
4,安东尼,27020
5,库里,22394
package sparkSql
import org.apache.spark.sql.{DataFrame, SaveMode, SparkSession}
/**
* @Author yqq
* @Date 2021/12/14 11:22
* @Version 1.0
* 在本地连接Hive ,操作Hive中的数据加载DataFrame,需要配置 hive.metastore.uris 配置项。
*/
object ReadHiveTableToDF2 {
def main(args: Array[String]): Unit = {
val session = SparkSession.builder().master("local").appName("test").config("hive.metastore.uris","thrift://192.168.134.103:9083")
.enableHiveSupport().getOrCreate()
session.sql("use spark")
//创建student表
session.sql(
"""
|create table student(id int,name string,age int) row format delimited fields terminated by ','
|""".stripMargin)
//创建score表
session.sql(
"""
|create table score(id int,name string,score int) row format delimited fields terminated by ','
|""".stripMargin)
//给student加载数据
session.sql(
"""
|load data local inpath "data/student" into table student
|""".stripMargin)
//给score表加载数据
session.sql(
"""
|load data local inpath "data/score" into table score
|""".stripMargin)
//读取Hive表的数据,进行统计分析
val dataFrame = session.sql(
"""
|select st.id,st.name,st.age,sc.score from student st join score sc on st.id = sc.id
|""".stripMargin)
//将结果数据保存在Hive表中
dataFrame.write.mode(SaveMode.Overwrite).saveAsTable("start")
}
}
hive> show tables;
OK
jizhan
score
start
student
Time taken: 0.039 seconds, Fetched: 4 row(s)
hive> select *from student;
OK
1 科比 40
2 詹姆斯 37
3 保罗 38
4 安东尼 38
5 库里 33
Time taken: 0.223 seconds, Fetched: 5 row(s)
hive> select *from score;
OK
1 科比 34507
2 詹姆斯 35404
3 保罗 21098
4 安东尼 27020
5 库里 22394
Time taken: 0.204 seconds, Fetched: 5 row(s)
hive> select *from start;
OK
1 科比 40 34507
2 詹姆斯 37 35404
3 保罗 38 21098
4 安东尼 38 27020
5 库里 33 22394
Time taken: 0.215 seconds, Fetched: 5 row(s)