Spark:用CombineTextInputFormat缓解小文件过多导致Task数目过多的问题

http://www.cnblogs.com/yurunmiao/p/5195754.html

原始读法:

lines = sc.textFile("hdfs:///dir/")

这样一个block会形成一个partition,对应一个task。

优化读法:

lines = sc.newAPIHadoopFile(
  "hdfs:///dir/",
  "org.apache.hadoop.mapreduce.lib.input.CombineTextInputFormat",
  "org.apache.hadoop.io.LongWritable",
  "org.apache.hadoop.io.Text")
.map(s => s._1)

org.apache.hadoop.mapreduce.lib.input.CombineTextInputFormat可以将多个小文件合并生成一个Split,而一个Split会被一个Task处理,从而减少Task的数目。

转载于:https://www.cnblogs.com/xuejianbest/p/10284988.html

你可能感兴趣的:(Spark:用CombineTextInputFormat缓解小文件过多导致Task数目过多的问题)