zoukankan      html  css  js  c++  java
  • Spark系列之弹性数据集-RDD

      RDD不仅是分布式的数据集合,更是Spark的核心。

      RDD会跟踪应用每个块的所有转换(日志),也就是说,当RDD的某个分区数据丢失时会根据日志进行重新计算。  

      RDD是无Schema的数据结构。

    1、RDD的生成

      RDD的生成有三种方式,   

        1) .parallelize() 集合生成

        2)外部文件或系统

        3)通过其他RDD生成

      外部文件或系统生成RDD通常可以是NTFS、FAT本地文件系统,或HDFS、S3、Cassandra这类的分布式文件系统。

      可以支持多种数据格式,文本、parquet、JSON、Hive表以及使用JDBC驱动程序可读取的关系数据库中的数据。

    2、转换-Transformation

      转换是对数据集进行逻辑的处理,并未涉及数据的归并或分散。

      官网参考:http://spark.apache.org/docs/latest/rdd-programming-guide.html#rdd-operations

      map,该方法应用在每个RDD元素上,大多数情况是对每一行的转换。

      filter,对RDD中的元素进行过滤,筛选符合条件的元素。

      flatMap,应用在每个RDD上,每行看做一个列表。

      distinct,返回列表中不同的值。

      sample,返回数据集的随机样本。第一个参数指定采样是否应该替换,第二个参数定义返回数据的分数,第三个参数是伪随机数产生器的种子。

      leftOuterJoin,和sql中的left join同理。

      repaatition,对数据集进行重新分区,改变数据集分区的数量。会重组数据,对性能产生重大影响。

    3、操作-Action

      官网参考:http://spark.apache.org/docs/latest/rdd-programming-guide.html#actions

      take,返回数据的多少行,优于count方法,take仅返回单个分区的数据。

      collect,将所有RDD的元素返回给驱动程序。

      reduce,减少RDD中的元素。rdd.map(lambda row:row[1]).reduce(lambda x,y: x+y)

      count,统计RDD中元素的数量

      saveAsTextFile,保存RDD为文本,每一个分区一个文件。

      foreach,对每个RDD元素使用相同的函数。

    4、宽窄依赖

      窄依赖是指父RDD的每个分区只被子RDD的一个分区使用,宽依赖是父RDD的每个分区可能被多个子RDD分区所使用的。

      

       宽依赖会触发shuffle过程。

  • 相关阅读:
    mysql修改加密方式
    信息安全学习路线
    DNS域传送漏洞
    CSRF漏洞
    反序列化漏洞
    计算机通讯基础
    gorm gen使用
    golang makefile使用
    linux命令行录制
    go代码自动生成注释
  • 原文地址:https://www.cnblogs.com/wind-man/p/13394272.html
Copyright © 2011-2022 走看看