mapreduce split 和 spark 分区的区别

Posted

技术标签:

【中文标题】mapreduce split 和 spark 分区的区别【英文标题】:Difference between mapreduce split and spark paritition 【发布时间】:2016-09-23 02:53:46 【问题描述】:

我想问一下在使用 Hadoop/MapReduce 和 Spark 时数据分区有什么显着差异?他们都在 HDFS(TextInputFormat) 上工作,所以理论上应该是一样的。

是否存在数据分区过程可能不同的情况?任何见解都会对我的学习非常有帮助。

谢谢

【问题讨论】:

【参考方案1】:

在使用时数据分区是否有任何显着差异 Hadoop/mapreduce 和 Spark?

Spark 支持所有 hadoop I/O 格式,因为它使用相同的 Hadoop InputFormat API 以及它自己的格式化程序。因此,默认情况下,Spark 输入分区的工作方式与 Hadoop/MapReduce 输入拆分相同。分区中的数据大小可以在运行时进行配置,它提供像repartitioncoalescerepartitionAndSortWithinPartition 这样的转换,可以让您直接控制正在计算的分区数量。

有没有他们的数据分区程序可以 不一样?

除了 Hadoop,Spark 的 I/O API 还具有其他一些智能 I/O 格式(例如:Databricks CSVNoSQL DB 连接器),它们将直接返回 @ 987654327@(RDD 之上的更多高级事物)是 spark 特定的。

从非 Hadoop 源读取数据时 Spark 分区的关键点

分区的最大大小最终取决于连接器, 对于 S3,属性类似于 fs.s3n.block.sizefs.s3.block.size。 Cassandra property 是 spark.cassandra.input.split.size_in_mb。 Mongo prop is,spark.mongodb.input.partitionerOptions.partitionSizeMB。 默认分区数 是max(sc.defaultParallelism, total_data_size / data_block_size)。 有时,集群中可用内核的数量也会影响分区数量,例如 sc.parallelize() 没有分区参数。

了解更多.. link1

【讨论】:

以上是关于mapreduce split 和 spark 分区的区别的主要内容,如果未能解决你的问题,请参考以下文章

mapreduce 分区和分组的区别

2017.5.9 MapReduce内部逻辑

Hive_on_Spark安装配置详解

spark和mapreduce的shuffle

带你了解极具弹性的Spark架构的原理

Apache Spark 与 MapReduce