在getsplits()中为numsplits传递什么

33qvvth1  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(274)

我的理解 getSplits() 是, FileInputformat 类实现 Inputformat 接口,它具有 getSplits() 方法,该方法负责计算分割大小和文件长度。 getSplits() 有一个参数 numSplits . 默认情况下,会传递给它什么?我试着找,但没找到。我想如果 isSplittable() 那么是假的吗 0 会被传给其他人。但是有人能帮我知道值是如何传递的以及代码的相关部分吗。

vh0rcniy

vh0rcniy1#

我想谈谈我对这一点的理解。
这个 getSplits(JobConf job, int numSplits) 方法 FileInputFormat 类来自mapreduce的旧api。这里给出的numsplits只是一个提示,在实际计算中,split还依赖于其他一些默认和用户配置。通常,inputsplit计算中不需要此参数,只有在用户希望重写时才有用。请参考,
http://hadoop.apache.org/docs/r2.6.0/api/org/apache/hadoop/mapred/fileinputformat.html
这个 numSplits 参数由 JobClient 类,默认值为1,其中值为 job.getNumMapTasks() ,并调用fileinputformat类上的getsplits方法。请参阅,
http://grepcode.com/file/repository.cloudera.com/content/repositories/releases/com.cloudera.hadoop/hadoop-core/0.20.2-737/org/apache/hadoop/mapred/jobclient.java
这个 isSplittable() 方法在决定 numSplits 参数,所有这些都与fileinputformat类中使用的布尔值有关。
根据新的MapReduceAPI numSplits 中不再需要参数 FileInputFormat 请参考,
https://hadoop.apache.org/docs/r2.2.0/api/org/apache/hadoop/mapreduce/lib/input/fileinputformat.html
希望这有帮助。。

相关问题