[
https://issues.apache.org/jira/browse/HBASE-21594?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16720927#comment-16720927
]
ChenKai commented on HBASE-21594:
---------------------------------
You can read the hfile from the
attachments(2e4db6a7f8d14f2bb846781b07750dc1_SeqId_84_.bak). And the test code:
{code:java}
public static void main(String[] args) throws IOException,
ClassNotFoundException {
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(conf);
HFile.Reader reader = HFile.createReader(fs,
new
Path("file:///xxx/xxx/2e4db6a7f8d14f2bb846781b07750dc1_SeqId_84_.bak"), new
CacheConfig(conf), conf);
// 1. Trailer
FixedFileTrailer trailer = reader.getTrailer();
System.out.println(trailer.getMajorVersion());
System.out.println(trailer.getFirstDataBlockOffset());
System.out.println(trailer.getLastDataBlockOffset());
System.out.println(trailer.getLoadOnOpenDataOffset());
// Load up the index.
reader.loadFileInfo();
// Get a scanner that caches and that does not use pread.
HFileScanner scanner = reader.getScanner(false, false);
// Align scanner at start of the file.
scanner.seekTo();
// read data
while (scanner.next()) {
Cell cell = scanner.getKeyValue();
String row = Bytes.toString(CellUtil.cloneRow(cell));
String cf = Bytes.toString(CellUtil.cloneFamily(cell));
String col = Bytes.toString(CellUtil.cloneQualifier(cell));
// String value = Bytes.toString(CellUtil.cloneValue(cell));
// System.out.println(row + " => " + cf + ":" + col + " = " + value);
}{code}
Thanks a lot.
> Requested block is out of range when reading hfile
> --------------------------------------------------
>
> Key: HBASE-21594
> URL: https://issues.apache.org/jira/browse/HBASE-21594
> Project: HBase
> Issue Type: Bug
> Components: HFile
> Affects Versions: 0.98.10
> Reporter: ChenKai
> Priority: Major
> Attachments: 2e4db6a7f8d14f2bb846781b07750dc1_SeqId_84_.bak,
> image-2018-12-13-20-11-00-818.png
>
>
> My HFiles are generated by Spark HBaseBulkLoad. And then when i read a few of
> them(or hbase do compact), i encounter the following exceptions.
>
> {code:java}
> Exception in thread "main" java.io.IOException: Requested block is out of
> range: 77329641, lastDataBlockOffset: 77329641,
> trailer.getLoadOnOpenDataOffset: 77329641
> at
> org.apache.hadoop.hbase.io.hfile.HFileReaderV2.readBlock(HFileReaderV2.java:396)
> at
> org.apache.hadoop.hbase.io.hfile.HFileReaderV2$AbstractScannerV2.readNextDataBlock(HFileReaderV2.java:734)
> at
> org.apache.hadoop.hbase.io.hfile.HFileReaderV2$ScannerV2.isNextBlock(HFileReaderV2.java:859)
> at
> org.apache.hadoop.hbase.io.hfile.HFileReaderV2$ScannerV2.positionForNextBlock(HFileReaderV2.java:854)
> at
> org.apache.hadoop.hbase.io.hfile.HFileReaderV2$ScannerV2._next(HFileReaderV2.java:871)
> at
> org.apache.hadoop.hbase.io.hfile.HFileReaderV2$ScannerV2.next(HFileReaderV2.java:891)
> at io.patamon.hbase.test.read.TestHFileRead.main(TestHFileRead.java:49)
> {code}
> Looks like `lastDataBlockOffset` is equals to
> `trailer.getLoadOnOpenDataOffset`. Could anyone help me? Thanks very much.
>
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)