mapreduce split和spark paritition之间的区别

时间:2016-09-23 02:53:47

标签: hadoop apache-spark mapreduce hdfs

我想问一下,在使用Hadoop / MapReduce和Spark 时,数据分区是否存在重大差异?它们都适用于HDFS(TextInputFormat),所以它在理论上应该是相同的。

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

由于

1 个答案:

答案 0 :(得分:6)

  

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

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

  

是否存在其数据分区过程可以的任何情况   不同?

除了Hadoop之外,I / O API Spark还有一些其他智能I / O格式(例如: Databricks CSV NoSQL DB Connectors )将直接返回{ {1}}(在RDD之上的更多高级事物)是特定于火花的。

从非Hadoop来源读取数据时,火花分区上的关键点

  • 分区的最大大小最终取决于连接器,
    • 对于S3,该属性类似于DataSet/DateFramefs.s3n.block.size
    • Cassandra propertyfs.s3.block.size
    • Mongo prop isspark.cassandra.input.split.size_in_mb
  • 默认情况下分区数 是spark.mongodb.input.partitionerOptions.partitionSizeMB。 有时,群集中可用内核的数量也会影响max(sc.defaultParallelism, total_data_size / data_block_size)之类的分区数,而不会出现分区参数。

了解更多.. link1