• spark快速大数据分析学习笔记(1)


    本文是《spark快速大数据分析学习》第三章学习笔记,文中大量摘抄书中原本,仅为个人学习笔记。

    RDD基础:

    RDD是一个不可变的分布式对象集合。每个RDD都被分为多个分区,这个分区运行在集群的不同节点上。RDD可以包含Python、Java、Scala中任意类型的对象。

    创建RDD的方式:

    读取一个外部数据集,或者在驱动器程序里分发驱动器程序中的对象集合,例如list和set。

    RDD支持两种类型的操作:

    转换操作和行动操作。转换操作的时候只会惰性的求值,只有行动操作的时候才会真正的求值。转化操作返回的是RDD,行动操作返回的是其他的数据类型。
     
    从上层来看,每个spark应用都由一个驱动器程序来发起集群上的各种并行操作。驱动器程序包换应用的main函数,并且定义了集群上的分布式数据集,还对这些分布式数据集应用了相关操作。spark shell本身就是驱动器,你只要输入你想要的操作就可以了。驱动器程序通过一个sparkcontext对象来访问spark,这个对象对象代表着对计算集群的一个连接,shell启动时自动创建一个sparkcontext对象,是一个叫做sc的变量。
     

    创建RDD:

    1、将程序已有的集合传给SparkContext的parallelize()方法,这种方法需要你的整个数据集先放在一台机器的内存中。
    val lines = sc.parallelize(List("pandas","i like pandas")) #val定义一个常量
    返回结果:lines: org.apache.spark.rdd.RDD[String] = ParallelCollectionRDD[0] at parallelize at <console>:24
      2、从外部存储中读取数据来创建RDD
    val lines = sc.textFile("/user/yz_dw3_pro/test/READme.md")
    返回结果:lines: org.apache.spark.rdd.RDD[String] = /user/yz_dw3_pro/test//READme.md MapPartitionsRDD[2] at textFile at <console>:24

    RDD转化操作:

    val inputRDD = sc.textFile("/user/yz_dw3_pro/test/READme.md")
    val errorRDD = inputRDD.filter(line => line.contains("error"))
    返回结果:errorRDD: org.apache.spark.rdd.RDD[String] = MapPartitionsRDD[8] at filter at <console>:26

    RDD行动操作:

    println("input number is"+ inputRDD.count() +"numbers")
    println("Here is 3 examples:")
    inputRDD.take(3).foreach(println)
    输出结果:input number is5numbers  
           Here is 3 examples:
          Ilike python
          Ilike python
          Ilike python
    inputRDD.collect().foreach(println) #collect收集整个RDD的数据,保证在单台机器的内存中能放得下时,才能使用
    inputRDD.persist() #persist操作会把这个RDD缓存下来
     
     
  • 相关阅读:
    [Delphi] 两种类的声明方法
    [Delphi]TMemoryStatus获取内存信息
    各大网站架构总结笔记[转]
    常用CSS命名参考资料
    常用的CSS Reset
    网页制作之CSS超级技巧
    SQL服务无法正常启动及数据库卸载
    常用CSS缩写语法
    视频播放器代码参数详解
    优秀的 Web 开发人员是这样炼成的
  • 原文地址:https://www.cnblogs.com/liushu555/p/10043350.html
Copyright © 2020-2023  润新知