大数据全系列 教程
1869个小节阅读:467.6k
目录
408考研
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
需求:通过SparkSQL操作hive中表以及查询表的数据,以及写数据到Hive的表中。
准备数据:
xxxxxxxxxx
[root@node3 ~]# vim student_infos
tuhao 19
diaosi 20
dufu 25
[root@node3 ~]# cp student_infos student_score
[root@node3 ~]# vim student_score
tuhao 91
diaosi 89
dufu 95
上传到hdfs文件系统的/目录下
xxxxxxxxxx
[root@node3 ~]# hdfs dfs -put student_infos /
[root@node3 ~]# hdfs dfs -put student_score /
修改pom.xml文件添加依赖:
xxxxxxxxxx
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-hive_2.12</artifactId>
<version>3.2.1</version>
</dependency>
在Hive的客户端中创建数据库实例spark
xxxxxxxxxx
hive> create database spark;
编写程序:
xxxxxxxxxx
package com.itbaizhan.sql
import org.apache.spark.SparkConf
import org.apache.spark.sql.{DataFrame, SaveMode, SparkSession}
object SSRWHive {
def main(args: Array[String]): Unit = {
//1.创建执行环境入口对象SparkSession对象
val spark: SparkSession = SparkSession.builder()
.enableHiveSupport()
.appName("SSRWHive")
.master("local[*]")
.getOrCreate()
import spark.implicits._
//println(spark)
//2.查询数据
spark.sql("use spark")
spark.sql("drop table if exists student_infos")
spark.sql("drop table if exists student_score")
spark.sql(
"""
|create table if not exists student_infos (
|name string,age int)
|row format delimited fields terminated by '\t'
|""".stripMargin)
spark.sql("drop table if exists student_score")
spark.sql(
"""
|create table if not exists student_score (
|name string,score int)
|row format delimited fields terminated by '\t'
|""".stripMargin)
spark.sql("show tables").show
spark.sql("load data inpath '/student_infos' into table student_infos")
spark.sql("load data inpath '/student_score' into table student_score")
spark.sql("select name,age from student_infos").show()
spark.sql("select name,score from student_score").show()
//关联查询
val df = spark.sql(
"""
|select si.name,si.age,ss.score
|from student_infos si,student_score ss
| where si.name = ss.name
|""".stripMargin)
df.show(100)
spark.sql("drop table if exists good_student_infos")
//将结果写入到hive表中
df.write.mode(SaveMode.Overwrite).saveAsTable("good_student_infos")
spark.close()
}
}