You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spark RDD与DataFrame读取文件时分区数差异原因探究

Spark DataFrame与RDD读取文件分区数差异的原因
  • RDD textFile的分区逻辑
    sc.textFile() 读取文件时,默认分区数由文件的HDFS块数和Spark的defaultParallelism(集群可用核数或本地模式CPU核数)共同决定。对于小于单个HDFS块的小文件(比如你这个2MB的文件),Spark默认会生成至少2个分区(除非通过minPartitions参数指定更小值),这么做是为了避免小文件只占用一个分区,浪费并行处理的能力。

  • DataFrame CSV读取(开启inferSchema)的特殊处理
    当设置inferSchema=true时,Spark需要完整扫描整个文件来推断每一列的数据类型。为了完成这个全局扫描,Spark会把整个文件作为一个整体读取,生成单分区的RDD,后续也不会自动拆分分区。如果关闭inferSchema(默认所有列都是String类型),Spark就会采用和RDD类似的分区规则,此时分区数会和textFile()的结果一致。

内容的提问来源于stack exchange,提问作者Youssef Alaa Etman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 08:33:16