[ 
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)

Reply via email to