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 输入拆分相同。分区中的数据大小可以在运行时进行配置,它提供像repartition
、coalesce
和repartitionAndSortWithinPartition
这样的转换,可以让您直接控制正在计算的分区数量。
有没有他们的数据分区程序可以 不一样?
除了 Hadoop,Spark 的 I/O API 还具有其他一些智能 I/O 格式(例如:Databricks CSV 和 NoSQL DB 连接器),它们将直接返回 @ 987654327@(RDD 之上的更多高级事物)是 spark 特定的。
从非 Hadoop 源读取数据时 Spark 分区的关键点
分区的最大大小最终取决于连接器, 对于 S3,属性类似于fs.s3n.block.size
或 fs.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 分区的区别的主要内容,如果未能解决你的问题,请参考以下文章