getSplits() 方法 returns 究竟是什么?
What exactly the getSplits() method returns?
getSplits() 方法 returns 到底是什么?
根据 apache 文档,它 returns InputSplit 的数组,这是什么意思?
它是 returns 映射器要运行 的文件字节块吗??
假设我们有 3 个文件,每个文件 50MB,那么 returns 字节的 64MB(50MB+14MB 第二个文件)位于 [0],64MB(36MB 第二个 + 28MB 第三个), 36MB(第三个文件),每个文件由 3 个不同的映射器处理?
如果我们有一个 120MB 的大文件,那么它 returns 同一文件的 64MB 块?
我什至不确定我问的是否合乎逻辑,我是 Hadoop 堆栈的新手。
MapReduce 中的输入拆分是映射器阶段的并行化单元。如果您有十个输入拆分,那么您将有十个映射器。在一般情况下,文件块将映射到输入拆分。
InputSplit object contains information about the split, but not the split data itself. Depending on the subclass (such as FileSplit) 此信息可以是诸如拆分位置及其大小之类的项目。
方法getSplits()
return 拆分 - 关于部分文件的元数据。每个地图处理一个分割。
如果您的文件很大,它会被分成与 HDFS 块大小相同的部分(至少 64MB)。在您的第二个示例中,它将是 64MB 和 56MB 的两个拆分。虽然,现在推荐的块大小是 128MB 甚至 256MB。
如果文件小于块大小,它将在单独的拆分中。在您的第一个示例中,您将有三个 50MB 的分割。如果你想将它们组合起来并在一个 Mapper 中处理,你可以使用 CombineFileInputFormat (example).
getSplits() 方法 returns 到底是什么? 根据 apache 文档,它 returns InputSplit 的数组,这是什么意思?
它是 returns 映射器要运行 的文件字节块吗??
假设我们有 3 个文件,每个文件 50MB,那么 returns 字节的 64MB(50MB+14MB 第二个文件)位于 [0],64MB(36MB 第二个 + 28MB 第三个), 36MB(第三个文件),每个文件由 3 个不同的映射器处理?
如果我们有一个 120MB 的大文件,那么它 returns 同一文件的 64MB 块?
我什至不确定我问的是否合乎逻辑,我是 Hadoop 堆栈的新手。
MapReduce 中的输入拆分是映射器阶段的并行化单元。如果您有十个输入拆分,那么您将有十个映射器。在一般情况下,文件块将映射到输入拆分。
InputSplit object contains information about the split, but not the split data itself. Depending on the subclass (such as FileSplit) 此信息可以是诸如拆分位置及其大小之类的项目。
方法getSplits()
return 拆分 - 关于部分文件的元数据。每个地图处理一个分割。
如果您的文件很大,它会被分成与 HDFS 块大小相同的部分(至少 64MB)。在您的第二个示例中,它将是 64MB 和 56MB 的两个拆分。虽然,现在推荐的块大小是 128MB 甚至 256MB。
如果文件小于块大小,它将在单独的拆分中。在您的第一个示例中,您将有三个 50MB 的分割。如果你想将它们组合起来并在一个 Mapper 中处理,你可以使用 CombineFileInputFormat (example).