【问题标题】:What's the difference between element and partition in Spark?Spark中的元素和分区有什么区别?
【发布时间】:2020-05-07 22:38:19
【问题描述】:

我尝试谷歌搜索,但找不到答案。

取自Apache Spark: map vs mapPartitions?

RDD的map和mapPartitions有什么区别

map 在每个 元素级别 使用正在使用的功能,而 mapPartitions 在分区级别行使功能。

在这种情况下,什么是元素级别?它只是一个单独的行吗?

【问题讨论】:

标签: apache-spark


【解决方案1】:

用外行的话来说,你有一个有 10 个架子的架子,你有 100 个球,如图所示。您将同样调整 1 个机架中的 10 个球。10 个机架中的 100 个球。是balldata.repartition(10)...因此均匀分布的数据(而不是将所有100个放在一个或2个机架中)

现在不是对每个球(元素)应用任何逻辑,而是将在每个机架(分区)上应用逻辑 一次。是有区别的。

在这种情况下,元素是球(单排),分区是机架。

优势是,如果您正在进行大量初始化,例如打开数据库连接等...对于您的处理逻辑...您将为每个分区(机架 :-))打开一个连接以应用您的逻辑,而不是打开数据库连接对于每个元素(球 :-))

我建议你通过examples given there to understand better

感谢/感谢图片here

【讨论】:

  • 感谢您的回答。我很困惑,因为我尝试执行的 map 函数的结果返回了一个元组列表。所以如果rdd = sc.parallelize(data) 那么res = rdd.map(self._prepricing) 而我的result.collect()[(0,1,2),(3,4,5),(6,7,8)]。元素是元组还是每个数字?
  • 在这种情况下是一个元组
  • 我明白了。也许是另一个问题,但在你的结论中mapPartitions transformation is faster than map since it calls your function once/partition, not once/element.。如果可以一次应用于多个元素,那么常规地图的意义何在?
猜你喜欢
  • 2019-11-13
  • 2017-04-05
  • 1970-01-01
  • 1970-01-01
  • 2012-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-27
相关资源
最近更新 更多