• Milittle
    2019-05-15
    对于思考题:需要重点理解原文中这句话:
    窄依赖就是父 RDD 的分区可以一一对应到子 RDD 的分区,宽依赖就是父 RDD 的每个分区可以被多个子 RDD 的分区使用。
    这句话说明了,窄依赖的父RDD必须有一个对应的子RDD,也就是说父RDD的一个分区只能被子RDD一个分区使用,但是反过来子RDD的一个分区可以使用父RDD的多个分区。那就回复今天的思考题,第一个疑问窄依赖子RDD的分区不一定只对应父RDD的一个分区,只要满足被子RDD分区利用的父RDD分区不被子RDD的其他分区利用就算窄依赖。第二个疑问其实上面已经做了回答,只有当子RDD分区依赖的父RDD分区不被其他子RDD分区依赖,这样的计算就是窄依赖,否则是宽依赖。
    最后,总结以下,就是只有父RDD的分区被多个子RDD的分区利用的时候才是宽依赖,其他的情况就是窄依赖。如果有哪里理解不对的地方,请老师指正,谢谢~
    展开

    作者回复: 你说的很准确!点赞

     1
     32
  • windcaller
    2019-07-26
    窄:一子多父,一子一父
    宽:一父多子
    
     4
  • 吟游雪人
    2019-05-16
    新的RDD不就是上一步的RDD计算出的结果么?为什么说是不保存计算结果?

    作者回复: 不保存计算结果指的是不写入硬盘。像MapReduce中每一步中间计算结果都要写入HDFS。新的RDD是上一步RDD计算的结果,但是并没有立刻进行计算,看过下一讲就明白了,只有碰到action操作才会开始执行,而且如果没有进行特别的缓存或者持久化操作,结果只在内存中,没有被写入硬盘,所以说不保存结果。

     1
     2
  • 一
    2019-05-15
    老师好!能不能请老师讲讲Spark和Flink的对比呢?这二者谁在机器学习乃至深度学习中更有优势呢?

    作者回复: 你好,在第21讲我会带大家比较Spark和Flink。

    
     2
  • 渡码
    2019-05-21
    思考题:
    如果子RDD依赖多个父RDD的多个完整分区,也就是说不存在父RDD一个分区数据分到子RDD多个分区的情况,那就是窄依赖。因为此时父RDD不需要对key重新做分区计算,子RDD也不需要等父RDD所有分区计算完毕。
    
     1
  • 追梦
    2019-05-16
    老师,下面这句话对吗?
    一个stage的所有task都执行完毕之后,会在各个节点本地的磁盘文件中写入计算中间结果,然后Driver就会调度运行下一个stage。下一个stage的task的输入数据就是上一个stage输出的中间结果。

    说明:spark的中间计算结果会直接落到磁盘上的???

    作者回复: 不对,Spark的中间计算结果如果没有特别指定持久化到硬盘,都会存在内存里以方便下一次调用,这也是它运行速度比MapReduce快的主要原因。

     1
     1
  • Little Spirits
    2019-05-16
    多个父分区到一个子分区,对于任何一个父分区而言都是pipeline的所以是窄依赖,而一个父分区到多个子分区对父分区而言不是pipeline的所以是宽依赖

    作者回复: 建议看一下高赞的回答,那位同学的理解要更加全面

    
     1
  • miwucc
    2019-05-15
    子rdd依赖多个父rdd来产出结果。明显是宽依赖。因为需要等待多个父rdd结果完毕才能开始计算。宽依赖还是窄依赖关键看是否要等待更多父rdd准备完毕。
    
     1
  • 锦
    2019-05-15
    文中提到依赖关系的区分考虑基于两点:
    1、性能考虑,窄依赖可以使得每个数据节点并行计算结果,也可以支持链式计算;宽依赖需要父分区的中每个分区中的数据节点计算,只能串行计算。
    2、故障恢复考虑,窄依赖可以更快、更准的恢复数据,宽依赖则相对较慢。
    那么基于以上考虑,父rdd与子rdd是多对多的关系,则划分到宽依赖;一对一、一对多或多对一的关系都可以划分到窄依赖。

    分区方式:hash分区、rang分区,以及自定义分区
    疑问:因为分区指向某个节点中的数据块,那么分区的key是分区在RDD中的index还是其引用的数据块中的某个数据字段?我认为是后者。
    另外,hash分区和rang分区的应用场景分别是什么呢?

    RDD具有不可变性,只能通过转换来创建新的RDD,但是不代表RDD中分区指向的节点数据块也不可变,那么如何保证数据块不可变性呢?我认为可能是使用CopyOnWrite技术实现的。

    Spark优于MapReduce的地方之一在于:MapReduce的中间计算结果实时落盘,而Spark使用存储依赖关系和延迟存储中间数据来提高性能。
    展开
    
     1
  • CoderLean
    2019-05-15
    算啊,父子rdd可以通过函数进行转换,对于转换因子是基本不变的,那也应该支持逆转换。,而一个子rdd是无法推导出父rdd的,因为父rdd的数据是由函数转换后拆分给多个子rdd的。另外,之前没学过spark,对于flink内部算子也没有那么深入的理论,学完这个后要可以回去看看flink的算子是怎么实现的
    
     1
  • Rainbow
    2019-05-15
    uion也是窄依赖
    
     1
  • 桂浩晋
    2019-10-04
    RDD的每个partition有没有replication?万一node挂了怎么办?
     1
    
  • kissrain
    2019-09-09
    之前查阅了很多资料都没有一个对RDD完整解释或者说的很模糊。老师的这篇文章真是一针见血,越是厉害的人越是能把原理说的越通俗易懂。
    
    
  • hel
    2019-07-18
    新RDD的分区数可以不和父RDD的分区数想等吗
     1
    
  • 心灵捕手
    2019-06-27
    老师问下,
    lines = sc.textFile("data.txt")
    lineLengths = lines.map(lambda s: len(s))
    totalLength = lineLengths.reduce(lambda a, b: a + b)
    这个代码直接在spark上运行,报错<console>:1: error: ')' expected but '(' found.
    val lineLengths = lines.map(lambda s: len(s))
    展开
    
    
  • dancer
    2019-06-16
    这里有个疑惑希望老师解答。spark每一个子rdd的都会记录他和父rdd分区的依赖关系,所以不需要持久化到磁盘。那么我理解所有这必须依赖于父rdd也要一直保存在内存中才可以。如果是这样的话,是不是spark需要保存所有步骤产生的rdd在内存中。 另外如果所有数据都保存在内存中,如果机器故障,该怎样恢复数据呢?感谢老师用来答疑的宝贵时间。
     1
    
  • Geek_f406a1
    2019-05-30
    窄依赖并不是完全的父子RDD一一对应,子RDD可以对应多个父RDD,父RDD只能对应一个RDD?是否可以这样理解
     1
    
  • lwenbin
    2019-05-20
    思考题答案应该算narrow partition.
    看了spark rdd论文,对老师说的这些概念有了新的认识。
    narrow partition对应的转换例如:map, filter, join(子分区join key都在一个分区), union. 其中join和union就对应了老师说的子分区来自于多个父分区。
    区别在于wide partition有shuffle过程,存在对于同一个父分区中两个record, 经过转换操作后会对应到两个不同的子分区,所以这些操作例如:groupByKey, 通常的join。
    展开

    作者回复: 说的对。查阅paper是一个很好的学习方法,给你点赞。

    
    
  • 一
    2019-05-17
    “在物理存储中,每个分区指向一个存放在内存或者硬盘中的数据块”,老师,这一句不太理解,每个分区指向数据块,可是前文说到分区在逻辑上是一个数组,那数组怎么能指向数据块呢?
    
    
  • hua168
    2019-05-16
    老师,hadoop计算框架Map/Reduce 过时了,那另一个存储框架HDFS,也过时了吗?
    现在我看很多云提供商都是对象存储实现海量需求,
    现在开源的分布式存储,能在生产环境使用的,用什么了,ceph?

    作者回复: HDFS我认为并没有过时,现在大部分分布式计算引擎还是与HDFS存储的数据进行交互。分布式存储系统有很多比如Amazon的Dynamo DB,Facebook曾经用的HBase等等。开源的话我没有用过很多,ceph听说还不错。

    
    
我们在线,来聊聊吧