Spark-SQL核心编程
Spark-SQL核心编程MySQL
Spark SQL 可以通过 JDBC 从关系型数据库中读取数据的方式创建 DataFrame,通过对
DataFrame 一系列的计算后,还可以将数据再写回关系型数据库中。
IDEA通过JDBC对MySQL举行操纵:
[*]导入依赖
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.27</version>
</dependency>
MySQL8 <version>8.0.11</version>
https://i-blog.csdnimg.cn/direct/4d0a6008601946dab3f0bd8e7eb8cba9.png
[*]读取数据
val sparkConf = new SparkConf().setMaster("local
[*]").setAppName("SQL")
val spark:SparkSession = SparkSession.builder().config(sparkConf).getOrCreate()
import spark.implicits._
//通用的load方式读取
spark.read.format("jdbc")
.option("url","jdbc:mysql://localhost:3306/system")
.option("driver","com.mysql.jdbc.Driver")//com.mysql.cj.jdbc.Driver
.option("user","root")
.option("password","123456")
.option("dbtable","user")
.load().show()
spark.stop()
//通用的load方法的另一种情势
spark.read.format("jdbc")
.options( Map("url"->"jdbc:mysql://localhost:3306/system?user=root&password=123456","dbtable"->"user","driver"->"com.mysql.jdbc.Driver"))
.load().show()
//通过JDBC
val pros :Properties = new Properties()
pros.setProperty("user","root")
pros.setProperty("password","123456")
val df :DataFrame = spark.read.jdbc("jdbc:mysql://localhost:3306/system","user",pros)
df.show()
https://i-blog.csdnimg.cn/direct/3b8113c6f6b842e8a570fad955c617cd.png
[*]写入数据
val sparkConf = new SparkConf().setMaster("local
[*]").setAppName("SQL")
val spark:SparkSession = SparkSession.builder().config(sparkConf).getOrCreate()
import spark.implicits._
val rdd: RDD = spark.sparkContext.makeRDD(List(Stu("lisi", 20),
Stu("zs", 30)))
val ds:Dataset = rdd.toDS()
ds.write.format("jdbc")
.option("url","jdbc:mysql://localhost:3306/system")
.option("driver","com.mysql.jdbc.Driver")
.option("user","root")
.option("password","123456")
.option("dbtable","user2")
.mode(SaveMode.Append)
.save()
spark.stop()
https://i-blog.csdnimg.cn/direct/25a28bf7fb544b55a297d2949a2eb8de.png
Spark-SQL毗连Hive
1)内嵌的 HIVE
如果使用 Spark 内嵌的 Hive, 则什么都不用做, 直接使用即可。但是在实际生产活动当中,险些没有人去使用内嵌Hive这一模式。
2)外部的 HIVE
在虚拟机中下载以下配置文件:
https://i-blog.csdnimg.cn/direct/cfa25cd0ccfa4151b6e8e1c44ecbdebc.png
如果想在spark-shell中毗连外部已经摆设好的 Hive,须要通过以下几个步调:
➢ Spark 要接受 Hive 须要把 hive-site.xml 拷贝到 conf/目录下,并将url中的localhost改为node01
➢ 把 MySQL 的驱动 copy 到 jars/目录下
https://i-blog.csdnimg.cn/direct/ddcfac28df47401bb90cef709591edb7.png
➢ 把 core-site.xml 和 hdfs-site.xml 拷贝到 conf/目录下
➢ 重启 spark-shell
https://i-blog.csdnimg.cn/direct/5e88c86dd16845efa012a302ccb6b53c.png
https://i-blog.csdnimg.cn/direct/268c1427e63249d18553bcc59570a2c8.png
3)运行Spark-SQL CLI
Spark SQL CLI 可以很方便的在本地运行 Hive 元数据服务以及从命令行执行查询使命。在 Spark 目录下执行如下命令启动 Spark SQL CLI,直接执行 SQL 语句,类似于 Hive 窗口。
操纵步调:
[*]将mysql的驱动放入jars/当中;
[*]将hive-site.xml文件放入conf/当中;
[*]运行bin/目录下的spark-sql.cmd 或者打开cmd,在
D:\spark\spark-3.0.0-bin-hadoop3.2\bin当中直接运行spark-sql
https://i-blog.csdnimg.cn/direct/b0ad78850b65459d9e99453f2420e9d1.png
可以直接运行SQL语句,如下所示:
https://i-blog.csdnimg.cn/direct/53b78fa2aafb4634807491bfb93b88a6.png
5)代码操纵Hive
1. 导入依赖。
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-hive_2.12</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-exec</artifactId>
<version>2.3.3</version>
</dependency>
https://i-blog.csdnimg.cn/direct/99d31ba1a10c43978ff363071644941e.png
2. 将hive-site.xml 文件拷贝到项目标 resources 目录中。
3. 代码实现。
val sparkConf = new SparkConf().setMaster("local
[*]").setAppName("hive")
val spark:SparkSession = SparkSession.builder()
.enableHiveSupport()
.config(sparkConf)
.getOrCreate()
spark.sql("show databases").show()
spark.sql("create database spark_sql")
spark.sql("show databases").show()
https://i-blog.csdnimg.cn/direct/8afc569aca7244c49779032b864296c3.png
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]