spark入门名词解释

Spark + HDFS的运行架构图(http://www.oschina.net/news/76763/spark-architecture?from=timeline&isappinstalled=0)


Driver:运行Application的main函数并创建SparkContext,SparkContext准备Spark应用程序的运行环境、负责资源的申请、任务分配和监控等。当Executor运行结束后,Driver负责关闭SparkContext

Master    : Master作为集群的Manager,接收worker的注册并管理所有的worker,接收client提交的application,(FIFO)调度等待的application并向worker提交

Job:  一个Application可以产生多个Job,其中Job由Spark Action触发产生,一个action产生一个job。每个Job包含多个Task组成的并行计算。

Stage:每个Job会拆分为多个Task,作为一个TaskSet,称为Stage

RDD弹性分布式数据集,Spark基本计算单元,核心数据模型。表示已被分区、被序列化、不可变的、有容错机制的、能被并行操作的数据集合。

transformation:转换算子,这类转换并不触发提交作业,完成作业中间过程处理。

Action:行动算子,这类算子会触发SparkContext提交Job作业。


spark计算拓扑图(https://weibo.com/p/230418137d8846e0102xji1?display=0&retcode=6102)


Transformation具体内容

  • map(func) :返回一个新的分布式数据集,由每个原元素经过func函数转换后组成
  • filter(func) : 返回一个新的数据集,由经过func函数后返回值为true的原元素组成
  • 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]) : 使用一个相关的函数来合并每个key的value的值的一个算子就是对元素为KV对的RDD中Key相同的元素的Value进行func的reduce操作
  • join(otherDataset, [numTasks]) :在类型为(K,V)和(K,W)类型的数据集上调用,返回一个(K,(V,W))对,每个key中的所有元素都在一起的数据集
  • groupWith(otherDataset, [numTasks]) : 在类型为(K,V)和(K,W)类型的数据集上调用,返回一个数据集,组成元素为(K, Seq[V], Seq[W]) Tuples。
  • cartesian(otherDataset) : 笛卡尔积。但在数据集T和U上调用时,返回一个(T,U)对的数据集,所有元素交互进行笛卡尔积。

Actions具体内容

  • reduce(func) : 将RDD中元素前两个传给输入函数,产生一个新的return值,新产生的return值与RDD中下一个元素(第三个元素)组成两个元素,再被传给输入函数,直到最后只有一个值为止。这个函数必须是关联性的,确保可以被正确的并发执行
  • 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。这通常用于更新一个累加器变量,或者和外部存储系统做交互

Spark中,有一些名词概念是需要理解的,其中包括函数式编程。下面简单介绍一下这些概念。 ### 名词解释 - Spark:一个开源的分布式计算框架,可以用于大规模数据处理。 - RDD(Resilient Distributed Dataset):弹性分布式数据集,是一种能够被并行处理的、容错的、不可变的数据集。 - DataFrame:一个分布式的数据集合,可以被看做是由一组命名列组成的表格。 - Dataset:一种类型化的DataFrame,可以在编译期进行类型检查,提高代码的可靠性性能。 - Spark SQL:一个用于结构化数据处理的模块,支持SQL语言DataFrame/Dataset API。 - Spark Streaming:一个用于实时数据处理的模块,可以对实时数据流进行高效的处理。 - MLlib:一个用于机器学习的库,包含了常用的机器学习算法工具。 - GraphX:一个用于图计算的库,支持大规模的图计算操作。 ### 函数式编程 函数式编程是一种编程范式,强调将计算过程看作是一系列的函数组合。与命令式编程相比,函数式编程更加注重表达式的求值结果,而不是执行的过程。因此,函数式编程更加关注问题的本质,而不是解决问题的步骤。 在Spark中,函数式编程也得到了广泛的应用。例如,Spark中的RDDDataFrame/Dataset都是不可变的数据结构,这也是函数式编程的一个特点。此外,Spark中的很多API都是基于函数式编程的风格,例如map、filter、reduce等操作都是函数式编程中常见的操作。函数式编程还能够帮助我们编写更加简洁、可读性更高的代码,提高代码的可维护性可扩展性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值