Hadoop getsplits()中的numsplits将传递什么

Hadoop getsplits()中的numsplits将传递什么,hadoop,mapreduce,Hadoop,Mapreduce,我对getSplits()的理解是,FileInputformat类实现了Inputformat接口,它有一个getSplits()方法,负责计算分割大小和文件长度getSplits()有一个参数numSplits。默认情况下,将传递什么给它?我试着寻找,但没有成功。我假设如果isSplittable()为false,那么0将传递给其他人。但是有没有人能帮助我了解值是如何传递的以及代码的相关部分。我想分享一下我对这方面的理解 FileInputFormat类的getSplits(JobConf

我对
getSplits()
的理解是,
FileInputformat
类实现了
Inputformat
接口,它有一个
getSplits()
方法,负责计算分割大小和文件长度
getSplits()
有一个参数
numSplits
。默认情况下,将传递什么给它?我试着寻找,但没有成功。我假设如果
isSplittable()
为false,那么
0
将传递给其他人。但是有没有人能帮助我了解值是如何传递的以及代码的相关部分。

我想分享一下我对这方面的理解

FileInputFormat
类的
getSplits(JobConf job,int numSplits)
方法来自mapreduce的旧API。这里给出的numSplits只是一个提示,在实际的拆分计算中,它还依赖于其他一些默认和用户配置。通常,此参数在InputSplit计算中不是必需的,仅在用户希望重写时才有用。请参阅

numSplits
参数由
JobClient
类填充,默认值为1,其中值为
job.getNumMapTasks()
,它调用FileInputFormat类上的getSplits方法。请参阅

isSplittable()
方法在决定
numSplits
参数的值方面没有任何作用,它只是关于FileInputFormat类中使用的布尔值

根据新的mapreduce API,
FileInputFormat
类中不再需要
numSplits
参数。请参阅


希望这有帮助。

@Vignesh,你能想出这个主意吗?。