spark基础

总结了一些Spark基础知识比较好的网址和算子介绍

RDD操作详解1——Transformation和Actions概况
 
Spark Programming Guide(比较好)
 
 
 Spark编程指引(三)-----------------RDD操作,shuffle和持久化
 
 
 Spark 基本JAVA函数的的使用方法
 
 
spark基础与java api介绍
 
java实现spark wordcount
 
spark部署及代码示例讲解
 
 
 
 
 
 

Transformation具体内容

  • map(func) :返回一个新的分布式数据集,由每个原元素经过func函数转换后组成
  • filter(func) : 返回一个新的数据集,由经过func函数后返回值为true的原元素组成
    *flatMap(func) : 类似于map,但是每一个输入元素,会被映射为0到多个输出元素(因此,func函数的返回值是一个Seq,而不是单一元素)
  • flatMap(func) : 类似于map,但是每一个输入元素,会被映射为0到多个输出元素(因此,func函数的返回值是一个Seq,而不是单一元素)
  • sample(withReplacement, frac, seed) :
    根据给定的随机种子seed,随机抽样出数量为frac的数据
  • union(otherDataset) : 返回一个新的数据集,由原数据集和参数联合而成
  • groupByKey([numTasks]) :
    在一个由(K,V)对组成的数据集上调用,返回一个(K,Seq[V])对的数据集。注意:默认情况下,使用8个并行任务进行分组,你可以传入numTask可选参数,根据数据量设置不同数目的Task
  • reduceByKey(func, [numTasks]) : 在一个(K,V)对的数据集上使用,返回一个(K,V)对的数据集,key相同的值,都被使用指定的reduce函数聚合到一起。和groupbykey类似,任务的个数是可以通过第二个可选参数来配置的。
  • join(otherDataset, [numTasks]) :
    在类型为(K,V)和(K,W)类型的数据集上调用,返回一个(K,(V,W))对,每个key中的所有元素都在一起的数据集
  • groupWith(otherDataset, [numTasks]) : 在类型为(K,V)和(K,W)类型的数据集上调用,返回一个数据集,组成元素为(K, Seq[V], Seq[W]) Tuples。这个操作在其它框架,称为CoGroup
  • cartesian(otherDataset) : 笛卡尔积。但在数据集T和U上调用时,返回一个(T,U)对的数据集,所有元素交互进行笛卡尔积。
  • flatMap(func) :
    类似于map,但是每一个输入元素,会被映射为0到多个输出元素(因此,func函数的返回值是一个Seq,而不是单一元素)

Actions具体内容

  • reduce(func) : 通过函数func聚集数据集中的所有元素。Func函数接受2个参数,返回一个值。这个函数必须是关联性的,确保可以被正确的并发执行
  • collect() : 在Driver的程序中,以数组的形式,返回数据集的所有元素。这通常会在使用filter或者其它操作后,返回一个足够小的数据子集再使用,直接将整个RDD集Collect返回,很可能会让Driver程序OOM
  • count() : 返回数据集的元素个数
  • take(n) : 返回一个数组,由数据集的前n个元素组成。注意,这个操作目前并非在多个节点上,并行执行,而是Driver程序所在机器,单机计算所有的元素(Gateway的内存压力会增大,需要谨慎使用)
  • first() : 返回数据集的第一个元素(类似于take(1))
  • saveAsTextFile(path) : 将数据集的元素,以textfile的形式,保存到本地文件系统,hdfs或者任何其它hadoop支持的文件系统。Spark将会调用每个元素的toString方法,并将它转换为文件中的一行文本
  • saveAsSequenceFile(path) : 将数据集的元素,以sequencefile的格式,保存到指定的目录下,本地系统,hdfs或者任何其它hadoop支持的文件系统。RDD的元素必须由key-value对组成,并都实现了Hadoop的Writable接口,或隐式可以转换为Writable(Spark包括了基本类型的转换,例如Int,Double,String等等)
  • foreach(func) : 在数据集的每一个元素上,运行函数func。这通常用于更新一个累加器变量,或者和外部存储系统做交互

算子分类

大致可以分为三大类算子:

  1. Value数据类型的Transformation算子,这种变换并不触发提交作业,针对处理的数据项是Value型的数据。
  2. Key-Value数据类型的Transfromation算子,这种变换并不触发提交作业,针对处理的数据项是Key-Value型的数据对。
  3. Action算子,这类算子会触发SparkContext提交Job作业。
 
 
1. value型算子
    从输入到输出可分为一对一(包括cache)、多对一、多对多、输出分区为输入分区自激
    1)一对一,
        map,简单的一对一映射,集合不变;
        flatMap,一对一映射,并将最后映射结果整合;
        mappartitions,对分区内元素进行迭代操作,例如过滤等,然后分区不变
        glom,将分区内容转换成数据
    2)多对一,
        union,相同数据类型RDD进行合并,并不去重
        cartesian,对RDD内的所有元素进行笛卡尔积操作
    3)多对多,
        groupBy,将元素通过函数生成相应的Key,然后转化为Key-value格式
    4)输出分区为出入分区子集,
        filter,对RDD进行过滤操作,结果分区不调整
        distinct,对RDD进行去重操作,
        subtract,RDD间进行减操作,去除相同数据元素
        sample/takeSample 对RDD进行采样操作
    5)cache,
        cache,将RDD数据原样存入内存
        persist,对RDD数据进行缓存操作
2. Key-Value算子
    Key-Value算子大致可分为一对一,聚集,连接三类操作
    1)一对一,
        mapValues,针对数值对中的Value进行上面提到的map操作
    2)聚集操作
        combineByKey、reduceByKey、partitionBy、cogroup
    3)连接
        join、leftOutJoin、rightOutJoin
3. Actions算子
    该算子通过SparkContext执行提交作业操作,出发RDD DAG的执行
    1)foreach, 对RDD中每个元素进行操作,但是不返回RDD或者Array,只返回Unit
    2)存入HDFS,saveAsTextFile,saveAsObjectFile
    3)scala数据格式,collect,collectAsMap,reduceByKeyLocally, lookup, count, top, reduce, fold, aggregate
 
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值