spark入门

---恢复内容开始---

 

 

 

三、Spark RDDS

  可以把RDDs看做特殊得待处理数据集,可以并行被处理,操作这个数据集的包括两个方法,一个是转换(transformations)不计算结果,一个是active(动作),计算出结果

  1、弹性分布式数据集(RDDs)

  spark核心的概念是RDD:一个可并行操作的有容错机制的数据集合。两种创建RDD的方法,一个是从别的RDDs转化过来,一个是从外部存储系统的数据集,如HDFS、Hbase等

  2、并行集合

  顾名思义:并行集合(parallelized  collections)的创建是通过对已有的集合(scala seq)上调用spark context的parallelized方法实现,方法操作后就把数据复制到一个可并行操作的分布式数据集中,

  一旦创建完成,这个分布式数据集即可以被并行操作,如distData.reduce((a,b) => a+b) 将这个数组中的元素相加,

  并行集合方法有个很重要的参数是切片数,表示一个数据集切分的分数,spark会在集群上为每一个切片运行一个任务,你可以在集群上为每个cpu设置2-4个切片;正常情况下,spark会试着基于你的集群状况自动第

  设置切片数目

  3、外部数据转为RDDs  

  spark可以从任何一个hadoop支持的存储源创建分布式数据集,包括本地文件系统

  文本文件RDDs可以使用SparkContext的textFile方法创建,参数是URl,一旦创建完成,可以对数据集进行map、reduce操作

  distData.map(s  => s.length).reduce((a,b) => a+b)  将所有行的长度相加

  4、spark RDD 操作

  

  第一行定义来自于外部文件的RDD,这个数据集并没有加载到内存或者其他的操作;lines仅仅是一个指向文件的指针,第二行是定义linesLengths,它是map转换的结果,同样linesLengths由于懒惰模式也没有

  立即计算,最后,我们执行reduce,他是一个动作(active),在这个地方,spark把计算分成多个任务(task),并且让他们运行在多个机器上,每台机器都运行自己的map部分和本地reduce部分,

  然后,仅仅将结果返回给驱动程序,如果我们想要再次使用linenlengths,可以添加linelengths.persist(),在reduce之前,它会导致lineLengths在第一次计算完成之后保存到内存中。

  5、RDD持久化 cache缓存

  将数据集缓存到内存,每一个节点都将参与计算的所有分区数据存储到内存中,并且这些数据可以被这个集合的动作active重复利用。

四、Spark Streaming:处理流数据、Dstream、由一系列RDDs组成

  Spark streaming 是spark核心API的一个扩展,它对实时流试数据的处理具有可扩展性、高吞吐量,可容错性等特点,我们可以从kafka、flume、titter等源获取数据,也可以通过由高阶函数map、reduce

  join等组成的复杂计算出数据,最后处理后的数据可以推送到文件系统、数据库,或者数据应用到Spark的机器学习算法、图处理算法中去

  Spark streaming接受实时的输入数据流,然后将这些数据切分为批数据供Spark处理,

  spark streaming支持一个高层的抽象(类似于类),叫做离散流,或者Dstream,Dstream既可以从kfkaf、flume获取的数据流创建,也可以在其他的Dstream的基础上通过高阶函数获得,

  在内部、Dstream是由一系列的RDDs组成。

 

五、Spark SQL

  允许用SQL、HIveQL或者Scala表示的关系查询,这个模块的核心是一个新类型的RDD-SchemaRDD。SchemaRDDs由行对象组成,行对象拥有一个模式(scheme)来描述行中每一列的数据类型。

  SchemaRDD类似于关系型数据库中的表,类似于pandas中的Dataframe。

  可以通过存在的RDD、一个Parquet文件、一个JSON数据库或者对存储在APache Hive中的数据执行HiveSQL查询中创建

 

 

 

六、GraphX

  GraphX,它用于图和并行图(graph-parallel)的计算。是扩展spark rdd的,引入了带有定点和边属性的有向重图。为了支持图计算,GraphX公开一组基本的功能操作以及Pregel API的一个优化,另外

  GraphX包含一个日益增长的图算法和图Builders的集合,用以简化图分析任务。

  GraphX允许用户将数据当做一个图和一个集合(RDD),而不需要数据移动或者复制。通过将最新的进展整合进graph-parallel系统,GraphX能够优化图操作的执行

 

 

---恢复内容结束---

posted @ 2018-03-28 22:23  lxwlxw  阅读(170)  评论(0编辑  收藏  举报