zoukankan      html  css  js  c++  java
  • 寒假学习进度4

    今天开始学习spark3大数据结构中的RDD

    什么是RDD:

    RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是 Spark 中最基本的数据
    处理模型。代码中是一个抽象类,它代表一个弹性的、不可变、可分区、里面的元素可并行
    计算的集合。
    RDD有5大核心属性:
    *-A list of partitions(分区列表用于执行任务时并行计算)
    *一 A function for computing each split*(分区计算函数,每个分区的数据计算)
    -A list of dependencies on other RDDs(RDD 之间的依赖关系)
    *- Optionally, a Partitioner for key-value RDDs (e.g. to say that the RDD is hash-partitioned)(,分区器,分区器自定义数据的分区)
    - Optionally, a list of preferred locations to compute each split on (e.g. block locations for水an HDFS file)(首选位置,可以根据计算节点的状态选择不同的节点位置进行计算)
     
    RDD的创建:
    (1)从集合(内存)中创建 RDD
    def main(args: Array[String]): Unit = {
    //准备环境
    val sparkConf = new SparkConf().setMaster("local[*]").setAppName("spark")
    val sparkContext = new SparkContext(sparkConf)
    //内存中创建rdd,内存中存储的数据作为数据源
    //parallelize:并行
    val rdd1 = sparkContext.parallelize(
    List(1,2,3,4)
    )
    //从底层代码实现来讲,makeRDD 方法其实就是 parallelize 方法
    val rdd2 = sparkContext.makeRDD(
    List(1,2,3,4)
    )
    rdd1.collect().foreach(println)
    rdd2.collect().foreach(println)
    //关闭环境
    sparkContext.stop()
    }
    (2)从外部存储(文件)创建 RDD
    def main(args: Array[String]): Unit = {
    val sparkConf = new SparkConf().setMaster("local[*]").setAppName("spark")
    val sparkContext = new SparkContext(sparkConf)
    //spark读取文件操作底层代码就是使用hadoop的读取方式
    //第二个参数可以指定最小分区数
    val fileRDD: RDD[String] = sparkContext.textFile("data",2)
    //path路径可以使用通配符*
    // val fileRDD: RDD[String] = sparkContext.textFile("data/1*.txt")
    //分布式系统路径
    // val fileRDD: RDD[String] = sparkContext.textFile("hdfs://hadoop102:8020/test")
    fileRDD.collect().foreach(println)
    sparkContext.stop()
    }
     
    RDD 并行度与分区:(数据分区后的数据分配问题篇幅过于长,详情见尚硅谷spark教程p35-p39)
    def main(args: Array[String]): Unit = {
    //准备环境
    val sparkConf = new SparkConf().setMaster("local[*]").setAppName("spark")
    val sparkContext = new SparkContext(sparkConf)
    //rdd的并行和分区,第二个参数可以指定分区数
    val dataRDD: RDD[Int] = sparkContext.makeRDD(
    List(1,2,3,4),4)
    //文件分区后进行输入在output目录下
    dataRDD.saveAsTextFile("output")
    sparkContext.stop()
    //关闭环境
    sparkContext.stop()
    }


    //spark读取文件操作底层代码就是使用hadoop的读取方式

  • 相关阅读:
    gulp中glob的匹配规则
    ES6————let和const命令
    location
    section,div,artical的区别
    Mysql基本语法
    Nodejs基础中间件Connect
    springMVC结合Jcrop实现头像上传裁剪预览功能--javaweb修订版
    Nodejs Express 4.X 中文API 4--- Router篇
    Nodejs Express 4.X 中文API 3--- Response篇
    Nodejs Express 4.X 中文API 2--- Request篇
  • 原文地址:https://www.cnblogs.com/chenghaixiang/p/15734097.html
Copyright © 2011-2022 走看看