2016-09-23 63 views
5

我想问的是,在使用Hadoop/MapReduce和Spark时,数据分区中有没有任何?他们都在HDFS(TextInputFormat)上工作,所以理论上它应该是一样的。mapreduce分割和火花分割之间的区别

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

感谢

回答

5

与 的Hadoop/MapReduce和星火工作时的数据分区任何显著区别?

星火支持所有Hadoop的I/O格式,因为它使用相同的Hadoop InputFormat的API与它自己的格式化一起。因此,Spark输入分区的工作原理与Hadoop/MapReduce输入默认分裂相同。分区中的数据大小可以在运行时配置,它提供像repartition,​​3210和repartitionAndSortWithinPartition这样的转换,可以让您直接控制正在计算的分区数。

是否有任何其数据分区过程可能与 不同的情况?

除了Hadoop的,I/O API的火花确实有一些其他的智能I/O的格式(例如:Databricks CSV的NoSQL数据库连接),这将直接返回DataSet/DateFrame(更高层的东西RDD的顶部),这是火花特定的。

上读取来自非Hadoop的源

  • 分区的最大大小为最终通过连接器的数据时火花分区要点,
    • 为S3中,属性是像fs.s3n.block.sizefs.s3.block.size
    • Cassandra propertyspark.cassandra.input.split.size_in_mb
    • Mongo prop isspark.mongodb.input.partitionerOptions.partitionSizeMB
  • 默认情况下,分区数 是max(sc.defaultParallelism, total_data_size/data_block_size)。 某些时候,集群中可用内核的数量也会像sc.parallaize()一样忽略分区数参数。

更多... link1