gpt4 book ai didi

hadoop - 记录读取器拆分将固定长度转换为定界ASCII文件

转载 作者:行者123 更新时间:2023-12-02 21:47:52 24 4
gpt4 key购买 nike

我有一个128 MB的文件,因此将其分为2个块​​(块大小= 64 MB)。
我正在尝试使用Custom Record Reader类将固定长度文件转换为定界ASCII文件

问题:

当文件的第一部分被处理后,当我看到一个 hive 表位于数据顶部时,我能够正确获取记录,它也正在访问数据node2以获取字符,直到记录结束。
但是,第二个拆分以\ n字符开始,并且记录数也增加了一倍。

Ex: 
First Split: 456 2348324534 34953489543 349583534
Second Split:
456 23 48324534 34953489543 349583534

作为记录读取器的一部分,为了跳过在第一个输入拆分中读取的字符,添加了以下代码
FixedAsciiRecordReader(FileSplit genericSplit, JobConf job) throws IOException {
if ((start % recordByteLength) > 0) {
pos = start - (start % recordByteLength) + recordByteLength;
}
else {
pos = start;
}

fileIn.skip(pos);
}

输入固定长度文件的每个记录的末尾都有一个\ n字符。

是否也应将任何值设置为起始变量?

最佳答案

我找到了解决此问题的方法,我在输入固定长度文件中有一个可变长度的 header ,该 header 没有被跳过,因此该位置不是完全从记录的开头开始,而是从位置(StartofRecord-HeaderLength)开始。这使得每条记录从前一条记录中读取几个字符(与标题长度一样多)。

更新的代码:

 if ((start % recordByteLength) > 0) {
pos = start - (start % recordByteLength) + recordByteLength + headerLength;
}
else {
pos = start;
}

fileIn.skip(pos);

关于hadoop - 记录读取器拆分将固定长度转换为定界ASCII文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23664372/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com