zoukankan      html  css  js  c++  java
  • 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能够优化图操作的执行

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

  • 相关阅读:
    【转】理解Ruby的4种闭包:blocks, Procs, lambdas 和 Methods
    折腾weibo开放平台
    netsh——常用命令及使用技巧
    The Enemies of Achievement
    java内存模型
    命名规则
    JS 控制加载页面对象
    点击图片弹出上传文件对话框
    ASP.NET判断用户是否在线
    ASP.Net处理QueryString函数汉字参数传递错误
  • 原文地址:https://www.cnblogs.com/lxw003/p/8666802.html
Copyright © 2011-2022 走看看