实施输入分割(HADOOP)
Implementing Input Splits(HADOOP)
谈论 大数据 ,假设我们有一个非常大的文件(以 GB 为单位),并且我们知道 HDFS 将文件存储在一种以块为单位的分布式方式,考虑到块大小为 128 MB ,某些块是否有可能像这样:
区块 1 :
_______________
这是第一行。
这是第二行。
这是第三行。
这是第四行。
这是行
区块 2 :
_________________
五个。
这是第六行。
这是第七行。
这是第八行。
这是第 9 行。
这是第十行。
我知道 Input Splits 的概念及其逻辑边界而不是物理边界,但我从未见过它的实现。当然,我已经阅读了描述哪些方法应该被重写等等的文章。但我的第一个疑问仍然是这种划分是否真的可能,就像这里有一半记录,那里有一半?
如果是,对其实施有何想法?
这里对此有很好的解释。
https://hadoopi.wordpress.com/2013/05/27/understand-recordreader-inputsplit/
还有这里
https://github.com/apache/hadoop/blob/trunk/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapred/LineRecordReader.java#L243
当达到块大小并创建下一个块时,可能会出现这种情况。
您可以通过将块大小设置为 4 kb 并将您的内容移动到 DFS 来模拟这种情况。在那里你可以看到最后一行分成两个块。
这本身就是输入拆分的一个很好的例子。当该过程发生时,控件将访问块 2 也将获取块 1 中未完成行的待处理数据。当块中的最后一个记录不完整时,输入拆分包括下一个块的位置信息和字节偏移量完成记录所需的数据。
谈论 大数据 ,假设我们有一个非常大的文件(以 GB 为单位),并且我们知道 HDFS 将文件存储在一种以块为单位的分布式方式,考虑到块大小为 128 MB ,某些块是否有可能像这样:
区块 1 :
_______________
这是第一行。
这是第二行。
这是第三行。
这是第四行。
这是行
区块 2 :
_________________
五个。
这是第六行。
这是第七行。
这是第八行。
这是第 9 行。
这是第十行。
我知道 Input Splits 的概念及其逻辑边界而不是物理边界,但我从未见过它的实现。当然,我已经阅读了描述哪些方法应该被重写等等的文章。但我的第一个疑问仍然是这种划分是否真的可能,就像这里有一半记录,那里有一半?
如果是,对其实施有何想法?
这里对此有很好的解释。
https://hadoopi.wordpress.com/2013/05/27/understand-recordreader-inputsplit/
还有这里
https://github.com/apache/hadoop/blob/trunk/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapred/LineRecordReader.java#L243
当达到块大小并创建下一个块时,可能会出现这种情况。 您可以通过将块大小设置为 4 kb 并将您的内容移动到 DFS 来模拟这种情况。在那里你可以看到最后一行分成两个块。 这本身就是输入拆分的一个很好的例子。当该过程发生时,控件将访问块 2 也将获取块 1 中未完成行的待处理数据。当块中的最后一个记录不完整时,输入拆分包括下一个块的位置信息和字节偏移量完成记录所需的数据。