启动sparkshell
本地模式:bin/spark-shell
集群启动:bin/spark-shell --master spark://spark-01:7077
–total-executor-cores 2
–executor-memory 500mb
spark集群角色
|Yarn |Spark |作用|
|ResourceManage | Master |管理子节点|
|NodeManager | Worker |管理当前节点|
|YarnChild |Executor |处理计算任务|
|Client+ApplicationMaster |SparkSubmit|提交计算任务|
集群下通过sc.textFile打开的文件需要在各个集群都有,不然报错
sparkRDD算子
DD(Resilient Distributed DataSet)是分布式数据集。RDD是Spark最基本的
数据的抽象。
scala中的集合。RDD相当于一个不可变、可分区、里面的元素可以并行计算的集合。
RDD特点:具有数据流模型的特点
自动容错
位置感知调度
可伸缩性
RDD允许用户在执行多个查询时将工作集缓存在内存中,可以重用工作集,大大的提升了
查询速度。
RDD类型分为:
1)Transformation
转换
2)Action
动作
RDD创建
RDD分为两种类型:
1)Transformation(lazy-》懒加载)
2)Action(触发任务)
1.普通创建:通过Transformation
2.并行创建:sc.parallelize()
参数有2个,第一个是seq序列,第二个是并行度
3.makeRDD创建
有两种重写方式
第一种:默认给出适合的分区
第二种:可以给出第二个参数,并行度(task数),实际调用了parallelize
常用Transformation
map(func)
flatMap(func)
sortby
reduceByKey
-》filter
过滤
-》union
并集
不排序,不去重
-》groupByKey
分组
reduceByKey 和groupByKey分别进行wordcount
reduceByKey 和groupByKey的区别:
https://blog.csdn.net/weixin_41804049/article/details/80373741
-》intersection
交集
-》join
关联
-》leftOuterJoin
左连接
保留左侧RDD,右侧如果join上保留 没join上None
-》rightOuterJoin
右连接
-》cartesian
笛卡尔积
行数相乘,不去重
Transformation特点:
1)生成新的RDD
2)lazy懒加载 (等待处理 ,不会马上处理数据,记录转换的状态)
3)并不会存储真正的数据,记录了转换关系
常用的Action
1)collect
收集
2)saveAsTextFile(path)
存储文件
底层存储方式,先存5B的文件,很小,算一片,600B,大了,进行切分,计算出203来切分,然后总共6个片,每个worker存三分(2个worker),也就是三个Task任务
三份数据:5B 5B 600B
理想切分:5+5+600=610 610/3 = 203
5B一片
5B一片
203一片
203一片
203一片
1一片
rdd1.partitions.length
查看分区数
3)count
计数
4)reduce
聚合
5)countByKey()
根据key计数
6)take(n)
取出多少个元素
7)first
返回RDD的第一个元素
8)takeOrdered(n)
取出多少个元素 默认正序
9)top(n)
倒序排序 取出元素