什么是Spark?Spark的特点和结构
1、什么是Spark?
Spark是一个针对大规模数据处理的快速通用引擎。
类似MapReduce,都进行数据的处理
2、Spark的特点:
(1)基于Scala语言、Spark基于内存的计算
(2)快:基于内存
(3)易用:支持Scala、Java、Python
(4)通用:Spark Core、Spark SQL、Spark Streaming
MLlib、Graphx
(5)兼容性:完全兼容Hadoop
3、Spark体系结构:主从结构
(1)主节点:Master
(2)从节点:Worker
搭建Spark的伪分布模式环境
1、解压:tar -zxvf spark-2.2.1-bin-hadoop2.6.tar.gz -C /opt
2、配置参数文件: conf/spark-env.sh
export JAVA_HOME=/root/training/jdk1.7.0_75
export SPARK_MASTER_HOST=bigdata11
export SPARK_MASTER_PORT=7077
conf/slaves ----> 从节点的主机信息
bigdata11
3、启动Spark伪分布环境
sbin/start-all.sh此处跟hadoop命令相同,我后来改为了spark-start.sh 和spark-stop.sh
Spark Web Console: http://192.168.8.xxx:8080
4、集群启动
spark-shell --master spark://Master:7077
--total-executor-cores 2 //内核数
--execute-memory 500mb 内存
5、RDD 弹性分布式数据集
特点
1)是Spark基本数据的抽象
2)scala中的集合,支持并行计算
3)自动容错
4)可伸缩性
类型 :
1)transformation 转换
2)action 动作
创建
list转换为RDD
过滤filter
Union
GroupByKey
交集intersection
join关联,类似数据库中的表关联
leftOuterJoin左联接,保留左表,如果没有责任None
rightOuterJoin右联接,保留右表,如果没有责任None
笛卡尔积 cartesian
Action
1、collect 收集
2、saveAsTextFile(文件路径) 保存到root中
3、分区数rdd7.partitions.length
res40: Int = 4
4、count计数
5、reduce 聚合
6、countByKey
7.take获取几个元素
8、first
9、max min
10、takeOrdered排序后获取数据
11、倒叙获取数据
Spark高级算子
1、aggregate先局部后全局
2、aggregateBykey
3、combineBykey
最底层的方法 reduceByKey和底层调用度为combineByKey
4、coalesce
rdd1.coalesce(4,true) 修改分区数 是否加shuffle
res6: org.apache.spark.rdd.RDD[Int] = MapPartitionsRDD[4] at coalesce at <console>:27
5、 repartition 默认加了shuffle
rdd1.repartition(5)
res10: org.apache.spark.rdd.RDD[Int] = MapPartitionsRDD[8] at repartition at <console>:27
5、 filterByRange 过滤出指定范围的元素
6、flatMapValue切分出每个元素
7、foldBykey通过key拼接字符串
8、foreach遍历每个元素
9、keyBy
10、mapPartitionsWithIndex按照分区进行存放元素
JDBCRDD API编程
访问数据库
cache缓存
会加载之前缓存中的数据
checkPoint:
1)先执行setCheckPoint
2)先执行cache后执行checkPoint
代码优化:一个是速度,一个是安全 setCheckPoint 和checkpoint 进行
自定义排序
模式匹配
隐式转换
将其结果插入到mysql中
JDBCRDD
插入到M啊日啊DB数据库中