카테고리 없음

[HBase] All version data read

아르비스 2011. 10. 26. 19:42
HBase DB 는 중복해서 overWrite한 경우 이전의 data를 timeStamp 값을 통해서 읽어 올수 있다. 그에 대한 값을 출력하는 함수 예제

    public static List<HBaseTraceLog> getTraceLog(String msgId, HBaseSession hsession) throws IOException

    {

        List<HBaseTraceLog> traceLogList = new ArrayList<HBaseTraceLog>();        

        ConfigData conf = hsession.getConfigData();

        

        if(!conf.getAdmin().tableExists(strTableName))

        {

            createTable(conf);

        }

        

        // Get Table from HTablePool

        HTablePool htablePool = conf.getHtablePool();

        HTableInterface table = HBaseUtils.getTableFromPool(htablePool, "DeviceTable"/*strTableName*/);


        Get get = new Get(Bytes.toBytes(msgId));

        get.setMaxVersions();

        Result result = table.get(get);

        System.out.println("result :" + result);


//        NavigableMap<byte[], byte[]> navigablemap = result.getFamilyMap(Bytes.toBytes(strColumnFamily));

//

//        for(byte[] tempColumn : navigablemap.keySet())

//        {

//            byte[] offsetCol = tempColumn;

//            byte[] resu = navigablemap.get(offsetCol);

//            System.out.println(Bytes.toString(offsetCol) + " : " + Bytes.toString(resu));

//        }

        

//        NavigableMap<byte[],NavigableMap<byte[],NavigableMap<Long,byte[]>>> cfMap = result.getMap();

//        for (byte[] cfKey : cfMap.keySet())

//        {

//            // key : ColumnFamily     

//            System.out.println("first roop : Column Family ==> "+ Bytes.toString(cfKey));

//            

//            NavigableMap<byte[],NavigableMap<Long, byte[]>> columnMap = cfMap.get(cfKey);

//            for (byte[] columnKey : columnMap.keySet())

//            {

//                // key : column

//                System.out.println("second roop : Column ==> "+ Bytes.toString(columnKey));

//                

//                NavigableMap<Long, byte[]> timestampMap = columnMap.get(columnKey);

//                for (Long timestamp : timestampMap.keySet())

//                {

//                    // Key : timestamp

//                    System.out.println("third roop : TimeStamp ==> "+ String.valueOf(timestamp));

//                    byte[] lastvalue = timestampMap.get(timestamp);

//                    System.out.println("Value : "+ Bytes.toString(lastvalue));

//                    

//                }

//            }

//        }


        

        System.out.println("=================================================");

        System.out.println("MsgID : " +msgId);


        NavigableMap<byte[],NavigableMap<byte[],NavigableMap<Long,byte[]>>> cfMap = result.getMap();

        List<Long> timestampList = new ArrayList<Long>();

        for (byte[] cfKey : cfMap.keySet())  //ColumnFamily

        {

            System.out.println("+++++++++++++++++++++++++++++++++++++++++++++++++");

            System.out.println("columnFamily ==> " + Bytes.toString(cfKey));

            System.out.println("+++++++++++++++++++++++++++++++++++++++++++++++++");

            NavigableMap<byte[],NavigableMap<Long, byte[]>> columnNaviMap = cfMap.get(cfKey);

            byte[] firstColumn = columnNaviMap.firstKey();


            // check version from TimeStamp

            if(firstColumn.length > 0)

            {

                NavigableMap<Long, byte[]> timestampMap = columnNaviMap.get(firstColumn);

                for (Long timestamp : timestampMap.keySet())

                {

                    timestampList.add(timestamp); // add all version of timeStamp

                }

            }

            

            // display

            for (Long timeStamp : timestampList)

            {

                System.out.println("TraceTime ==> " + String.valueOf(timeStamp));

                System.out.println("-------------------------------------------------");


                NavigableMap<byte[],NavigableMap<Long, byte[]>> columnMap = cfMap.get(cfKey);

                for (byte[] columnKey : columnMap.keySet()) //column

                {

                    NavigableMap<Long, byte[]> timestampMap = columnMap.get(columnKey);

                    System.out.println("\t"+Bytes.toString(columnKey)+" : "+ Bytes.toString(timestampMap.get(timeStamp)));

                }

                System.out.println("-------------------------------------------------");

            }

            System.out.println();

        }

                

        htablePool.putTable(table);

        

        return traceLogList;

    }