我想问一下,在使用Hadoop / MapReduce和Spark 时,数据分区是否存在重大差异?它们都适用于HDFS(TextInputFormat),所以它在理论上应该是相同的。
是否有任何数据分区程序可能不同的情况?任何见解对我的学习都非常有帮助。
由于
答案 0 :(得分:6)
使用时数据分区是否有任何显着差异 Hadoop / mapreduce和Spark?
Spark支持所有hadoop I / O格式,因为它使用相同的Hadoop InputFormat API 以及它自己的格式化程序。因此, Spark输入分区的工作方式与默认情况下Hadoop / MapReduce输入分割相同。分区中的数据大小可以在运行时配置,它提供repartition
,coalesce
和repartitionAndSortWithinPartition
之类的转换,可以直接控制正在计算的分区数。
是否存在其数据分区过程可以的任何情况 不同?
除了Hadoop之外,I / O API Spark还有一些其他智能I / O格式(例如: Databricks CSV 和 NoSQL DB Connectors )将直接返回{ {1}}(在RDD之上的更多高级事物)是特定于火花的。
从非Hadoop来源读取数据时,火花分区上的关键点
DataSet/DateFrame
或fs.s3n.block.size
。 fs.s3.block.size
。 spark.cassandra.input.split.size_in_mb
。 spark.mongodb.input.partitionerOptions.partitionSizeMB
。
有时,群集中可用内核的数量也会影响max(sc.defaultParallelism, total_data_size / data_block_size)
之类的分区数,而不会出现分区参数。了解更多.. link1