@Override
    public LinkDataMap mapRow(Result result, int rowNum) throws Exception {
        if (result.isEmpty()) {
            return new LinkDataMap();
        }
        if (logger.isDebugEnabled()) {
            logger.debug("mapRow num:{} size:{}", rowNum, result.size());
        }

        final byte[] rowKey = getOriginalKey(result.getRow());

        final Buffer row = new FixedBuffer(rowKey);
        final Application outApplication = readOutApplication(row);
        final long timestamp = timeWindowFunction.refineTimestamp(TimeUtils.recoveryTimeMillis(row.readLong()));

        // key is destApplicationName.
        final LinkDataMap linkDataMap = new LinkDataMap();
        for (Cell cell : result.rawCells()) {
            final Buffer buffer = new OffsetFixedBuffer(cell.getQualifierArray(), cell.getQualifierOffset(), cell.getQualifierLength());
            final Application inApplication = readInApplication(buffer);
            if (filter.filter(inApplication)) {
                continue;
            }

            String inHost = buffer.readPrefixedString();
            short histogramSlot = buffer.readShort();

            String outAgentId = readOutAgentId(buffer);


            long requestCount = CellUtils.valueToLong(cell);
            if (logger.isDebugEnabled()) {
                logger.debug("    Fetched OUT_LINK {} {} -> {} (slot:{}/{}) inHost:{}",
                        outApplication, outAgentId, inApplication, histogramSlot, requestCount, inHost);
            }

            if (StringUtils.isEmpty(inHost)) {
                inHost = inApplication.getName();
            }
            linkDataMap.addLinkData(outApplication, outAgentId, inApplication, inHost, timestamp, histogramSlot, requestCount);
        }

        return linkDataMap;
    }
rowkey = caller col = callee

@author netspider
web/src/main/java/com/navercorp/pinpoint/web/applicationmap/dao/mapper/OutLinkMapper.java