目录
01:上篇回顾
https://blog.csdn.net/m0_57498038/article/details/119112063
-
RDD、DF、DS之间的区别是什么?
-
RDD:分布式数据集合:数据 + 支持泛型
-
DataFrame:分布式数据表:数据 + Schema + 不支持泛型【Row】
-
DataSet:分布式数据表:数据 + Schema + 支持泛型
-
-
怎么实现三者之间的互相转换?
-
DF 、 DS =》 RDD:.rdd
-
RDD =》 DF、DS
-
方式一:反射:将没有Schema的RDD类型转换有Schema的RDD类型
-
RDD【String】 =》 RDD【CaseClass】
-
-
方式二:自定义Schema
-
RDD【Row】 + Schema【StructType【StructFields】】 = DataFrame
-
-
-
DF => DS :df.as【CaseClass】
-
DS => DF:toDF(colName)
-
-
SaveMode是什么?
-
保存模式
-
Append:追加
-
Overwrite:覆盖
-
ErrorIfExists:默认,如果存在就报错
-
Ignore:如果存在就忽略
-
-
csv:文本文件
-
jdbc:问题:主键 + 约束导致如果用追加:主键重复,如果用覆盖,数据丢失
ds.write.mode.option.jdbc
-
解决
-
如果用官方的JDBC:1-建MySQL表时,允许主键自动更新 2-使用追加模式
-
如果不用官方的JDBC:自己写
ds.foreachPartition(part => { //JDBC //replace into })
-
-
-
-
如何调整SparkSQL 的聚合Shuffle中的分区个数?
-
默认分区:200个
-
修改属性:spark.sql.shuffle.partitions
-
-
SparkSQL有哪些常用的数据源接口?
-
Source接口
-
调用:spark.read.format(“格式”).load(“路径”)
spark.read.csv/partquet/orc/json/jdbc/table
-
02:课程目标
-
SparkSQL与Hive集成
-
SparkSQL为什么要访问Hive,集成基本原理?
-
Spark SQL 集成 Hive 与 Hive on Spark 有什么区别?
-
SparkSQL集成Hive怎么进行开发?
-
-
SparkSQL开发方式
-
IDEA + JAR
-
Shell
-
Beeline
-
SQL脚本
-
JDBC
-
-
SparkStreaming入门
-
实时计算的需求以及场景?
-
SparkStreaming的基本设计:驱动接口【StreamingContext】和数据抽象【DStream】
-
自定义开发一个SparkStreaming程序:Wordcount
-
03:数据源Sink:设计
-
目标:了解SparkSQL中Sink数据源的设计
-
实施
-
设计:非常类似于MR的设计
-
MR的设计
-
输出:OutputFormat
-
TextOutputFormat:将结果保存为文件
-
DBOutputFormat:将结果保存到MySQL
-
-
-
SparkSQL的设计
-
输出:DataFrameWriter
-
.csv
-
.jdbc
-
.parquet
-
.json
-
……
-
-
-
-
语法
//保存方式一:redis、hbase、JDBC df/ds.foreachPartition(自定义保存的逻辑) //保存方式二 df/ds.write.mode.jdbc => df/ds.write.mode.format("输出的格式").save("路径") //保存方式三 df/ds .write .mode(SaveMode.Overwrite) .format("指定保存格式") .save("保存的路径")/save()/saveAsTable
-
save(Path:String):用于保存文本
-
save():用于保存数据库
-
saveAsTable:保存到Hive表中
-
-
-
小结
-
了解SparkSQL中Sink数据源的设计
-
04:集成Hive:场景及设计
-
目标:掌握SparkSQL集成Hive的场景及设计
-
实施
-
场景
-
离线:对数据仓库中的数据进行分布式计算分析处理
-
数据来源:Hive
-
-
实时:对结构化数据进行分布式实时计算
-
数据来源:Kafka
-
-
利用SparkSQL对Hive数据仓库中的数据进行处理分析
-
-
设计
-