初阶版

写出Spark任务提交命令
spark-submit
--class 类全限定名
--master spark://spark:7077  (端口)
--executor-memory 512m  (运行内存)
--total-excutor-cores 2    (执行任务线程数量)
列出至少5个用于聚合类的算子

reduceBykey 根据相同key进行分组聚合
groupBykey 根据相同key进行分组聚合
reduce
combinebykey
fold
foldByKey

groupByKey和Reducebykey的区别
1.groupByKey
    (hello,1)       (hello,3)
    (hello,2)       (mimi,2)
    (hello,3)       (bing,2)
    
    hello,compactBuffer(1,2,3,3)
    mimi,compactBuffer(2)
    bing,compactBuffer(2)

2.reduceByKey
    (hello,1)       (hello,3)
    (hello,2)       (mimi,2)
    (hello,3)       (bing,2)
    
    
(hello,6)       (hello,3)
                (mimi,2)
                (bing,2)

hello,compactBuffer(9)
mimi,compactBuffer(2)
bing,compactBuffer(2)
reduceByKey先内部进行聚合,再全局聚合,这样会在全局聚合时减少网络IO 所以能用reduceByKey的尽量使用reduceByKey
工作中尽量避免使用哪些算子
尽量减少使用容易发生Shuffle类的算子,
比如:ReduceByKey,join,distinct,Repartion算子,
尽量使用map类的非shuffle算子,减少性能开销
简述RDD的概念
RDD(Resilient Distributed Dataset) 叫做弹性分布式数据集,
是spark最基本的数据抽象,不可变,可分区,里面的元素可并行计算的集合

RDD是一个抽象的集合,里面包含描述信息,分布式数据集,
不可变(一旦创建里面的数据不可以改变),
可分区(每个分区对应一个block块,分区数量对应block块的数量)
里面的元素可以并行计算的集合(可以同时对多个节点上的RDD进行操作)
RDD的5大属性
1.分片(处理数据量大时要对数据进行切分,分片里面没有数据)最小2个分区
2.真正执行的时候计算函数获取对应每个分区上的数据进行计算
3.RDD具有依赖关系(可以做一些转换操作)
4.分区器
		1.Hash分区(根据Key的hash值进行分区)
		2.根据范围进行分区
5.最优位置,决定取哪一个RDD进行计算(一般取比较近的节点上的数据)	
两种创建RDD的方式
1.通过现有数据集创建(对现有rdd集合做一些转换操作)
2.通过数据集进行创建(sc.parallelize)
3.数据展示到控制台
	1.a.collect
Spark和hive的对比
1.Spark基于内存运行,效率高,运行快
2.hive调优相对于spark较为简单
算子
1.map算子(对RDD每一个元素进行遍历)
val a = sc.parallelize(List("tom","a","han","haha"))
val b = a.map(_.length)
val c = a.zip(b) //拉链操作“tom” ,3
c.collect

2.filter算子 (对数据进行过滤)
val a = sc.parallelize(1 to 10)
val b = a.filter((x:Int)=>x>50)
b.collect

3.flatMap算子
val a = sc.parallelize(1 to 10,4)//4代表分片数
val b =a.flatMap(1 to _)//每个元素都变成集合
b.collect

4.MapPartitions
一个task仅仅会执行一次function,将数据分区后就会减少function的执行次数,效率较高

缺点:会发生内存溢出

5.sortBy算子(排序)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值