天天看点

SparkSQL 在本地连接Hive与加载本地数据操作Hive

数据源:

  • 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)      

继续阅读