【问题标题】:Does contents of partitions in Spark changes after shuffling?Spark 中的分区内容在洗牌后会发生变化吗?
【发布时间】:2017-04-13 17:04:36
【问题描述】:

Spark 中的 shuffling(例如,如果我们执行 reduceByKey)结束后,每个分区的初始内容是否会发生变化,还是 Spark 只是将数据读入内存而不更改分区?

【问题讨论】:

  • 还是SPARK只是将数据读入内存而不改变分区?
  • 是的,它确实改变了..

标签: apache-spark rdd


【解决方案1】:

原来的 RDD 保持不变(它是不可变的)。 shuffle 过程读取每个分区中的数据,并为键的不同哈希值创建不同的缓冲区。然后创建新的分区,以便每个分区读取属于一个或多个哈希桶的所有缓冲区。结果是新的 RDD 有新的分区,其中包含来自多个原始分区的片段。

【讨论】:

  • 谢谢。 Scala 中的 RDD 是可变的,而在 python 中它是不可变的。这种理解正确吗?
  • 我在 spark-shell 中做了以下操作> val a = Array(1,2,3) val rdd1 = sc.parallelize(a) 在此之后我将我的 Array 更改为 a(0) =6 现在当我打印我的 RDD 时,它会显示更改后的值。
  • 我会说这是因为某处的一些惰性评估。打印 rdd1 后,尝试将 a(0) 更改为 7 并再次打印 rdd。它应该仍然有 6
猜你喜欢
  • 2021-10-23
  • 2016-07-24
  • 2015-04-08
  • 1970-01-01
  • 2015-01-18
  • 1970-01-01
  • 2012-09-01
  • 1970-01-01
  • 2019-07-25
相关资源
最近更新 更多