zoukankan      html  css  js  c++  java
  • 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缓存下来
     
     
  • 相关阅读:
    Pro/Toolkit示例之一:异步启动ProE
    Formatted MessageBox/AfxMessageBox
    Pro/Toolkit示例之二:同步Dll程式
    模拟按钮控件BN_CLICKED消息事件
    详解ProToolkit注册文件
    C++函数指针
    Message Basic
    C++指针之间的赋值与转换规则总结
    CString&CStringA&CStringW之间的相互转换
    Devexpress组件之XtraBars.PopupMenu的使用
  • 原文地址:https://www.cnblogs.com/liushu555/p/10043350.html
Copyright © 2011-2022 走看看