概述
Spark简介
spark是通过scala进行编写的,是一个快速,通用的大规模搜索引擎,与hadoop的MR类似,但是spark减少了shuffle过程来达到快速处理的效果从而可以实现数据的实时流处理,Spark Streaming将流式计算分解成一系列短小的批处理计算,并且提供高可靠和吞吐量服务。值得说明的是,无论是Spark SQL、Spark Streaming、GraphX还是MLlib,都可以使用Spark核心API处理问题,它们的方法几乎是通用的,处理的数据也可以共享,不仅减少了学习成本,而且其数据无缝集成大大提高了灵活性。
Spark常用方法介绍
map:返回一个新的分布式数据集,由每个原元素经过func函数转换后组成,也是spark最常用的 方法,在数据处理中大部分都是通过map来转换成指定的格式而从进行操作,如在处理数 据的时候将数据以元组,或者Row的形式返回用于后面形成以DataFormate用于以sql的形 式来进行操作,并保存到hive表或者mysql表中等。
filter:返回一个新的数据集,由经过func函数后返回值为true的原元素组成,在数据处理过程中 可以用于过滤掉不符合要求的数据,如在进行日志判断的时候可以给不符合的日志一个标 识,之后可以通过filter过滤掉不符合要求的数据,从而减少后面对数据计算的负担。
flatMap:类似于map,但是每一个输入元素,会被映射为0到多个输出元素(因此,func函数的 返回值是一个Seq,而不是单一元素)。
union:返回一个新的数据集,由原数据集和参数联合而成。
groupByKey:搜先使用该方法的RDD内部需要以k-v的形式也就是元组,这样他就会通过key来 进行分组,返回一个(K,Seq[V])对的数据集,默认情况下,使用8个并行任务进行分组, 你可以传入numTask可选参数,根据数据量设置不同数目的Task(groupByKey和filter结 合,可以实现类似Hadoop中的Reduce功能)
reduceByKey:在一个(K,V)对的数据集上使用,返回一个(K,V)对的数据集,key相同的 值,都被使用指定的reduce函数聚合到一起。和groupbykey类似,任务的个数是可 以通过第二个可选参数来配置的,一般用于对于相同key的数据的value来进行相加,也有普 通的reduce,使用reduce,RDD不需要是元组的形式,正常的正数等就可以。
join:在类型为(K,V)和(K,W)类型的数据集上调用,返回一个(K,(V,W))对,每个key中的所有 元素都在一起的数据集,也就是将数据进行合并的作用。
groupWith:在类型为(K,V)和(K,W)类型的数据集上调用,返回一个数据集,组成元素为(K, Seq[V], Seq[W]) Tuples。这个操作在其它框架,称为CoGroup。
sortByKey:在类型为( K, V )的数据集上调用,返回以K为键进行排序的(K,V)对数据集。升序 或者降序由boolean型的ascendingOrder参数决定(类似于Hadoop的Map-Reduce中间阶段 的Sort,按Key进行排序)。
count:统计RDD中的数据的个数。
collect:在Driver的程序中,以数组的形式,返回数据集的所有元素。这通常会在使用filter或者其 它操作后,返回一个足够小的数据子集再使用,直接将整个RDD集Collect返回,很可能会让 Driver程序OOM,他会将RDD转换成一个数组的形式返回。
take:获取字符串的前几个字符,可以进行指定,如take(2)就是获取字符串的前两个字符。
takeRight:获取字符串后几个字符,可以进行指定,如takeRight(2)就是获取字符串的后两个字 符。
drop:获取字符串中除了指定的个数的字符的剩余字符,如drop(1)就是获取字符串中除了第一个 字符的剩下的字符串,它是从前往后的。
dropRight:获取字符串中除了指定的个数的字符的剩余字符,如drop(1)就是获取字符串中除了第 一个字符的剩下的字符串,它是从后往前的。
first:获取数据集的第一个数据。
saveAsTextFile:将数据集的元素,以textfile的形式,保存到本地文件系统,hdfs或者任何其它 hadoop支持的文件系统。Spark将会调用每个元素的toString方法,并将它转换为文件中的一 行文本。
foreach:在数据集的每一个元素上,运行函数func。这通常用于更新一个累加器变量,或者和外 部存储系统做交互,用于遍历RDD中的数据。
cache:可以让它在第一次计算后,将结果保持存储在内存。数据集的不同部分,将会被存储在计 算它的不同的集群节点上,让后续的数据集使用更快。缓存是有容错功能的,如果任一分区的 RDD数据丢失了,它会被使用原来创建它的转换,再计算一次(不需要全部重新计算,只计算 丢失的分区),可以用于计算后的数据及逆行保存到内存中用于当数据丢失根据stage的依赖连 进行重新计算的时候就可以根据该保存的数据直接来使用,减少重复计算的过程,从而提高效 率。
最后
以上就是斯文中心为你收集整理的spark的使用Spark简介的全部内容,希望文章能够帮你解决spark的使用Spark简介所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复