2016-09-23 61 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