Returns a map of stats for a single sub query @param index The sub query to fetch @param with_scanners Whether or not to print detailed stats for each scanner @return A map with stats to print or null if the sub query didn't have any data.
(final int index,
final boolean with_scanners)
| 800 | * data. |
| 801 | */ |
| 802 | public Map<String, Object> getQueryStats(final int index, |
| 803 | final boolean with_scanners) { |
| 804 | |
| 805 | final Map<QueryStat, Long> qs = query_stats.get(index); |
| 806 | if (qs == null) { |
| 807 | return null; |
| 808 | } |
| 809 | |
| 810 | final Map<String, Object> query_map = new TreeMap<String, Object>(); |
| 811 | query_map.put("queryIndex", index); |
| 812 | |
| 813 | final Iterator<Entry<QueryStat, Long>> stats_it = |
| 814 | qs.entrySet().iterator(); |
| 815 | while (stats_it.hasNext()) { |
| 816 | final Entry<QueryStat, Long> stat = stats_it.next(); |
| 817 | if (stat.getKey().is_time) { |
| 818 | query_map.put(stat.getKey().toString(), |
| 819 | DateTime.msFromNano(stat.getValue())); |
| 820 | } else { |
| 821 | query_map.put(stat.getKey().toString(), stat.getValue()); |
| 822 | } |
| 823 | } |
| 824 | |
| 825 | if (with_scanners) { |
| 826 | final Map<Integer, Map<QueryStat, Long>> scanner_stats_map = |
| 827 | scanner_stats.get(index); |
| 828 | |
| 829 | final Map<String, Object> scanner_maps = new TreeMap<String, Object>(); |
| 830 | |
| 831 | query_map.put("scannerStats", scanner_maps); |
| 832 | if (scanner_stats_map != null) { |
| 833 | final Map<Integer, String> scanners = scanner_ids.get(index); |
| 834 | final Iterator<Entry<Integer, Map<QueryStat, Long>>> scanner_it = |
| 835 | scanner_stats_map.entrySet().iterator(); |
| 836 | while (scanner_it.hasNext()) { |
| 837 | final Entry<Integer, Map<QueryStat, Long>> scanner = scanner_it.next(); |
| 838 | final Map<String, Object> scanner_map = new TreeMap<String, Object>(); |
| 839 | scanner_maps.put(String.format("scannerIdx_%02d", scanner.getKey()), |
| 840 | scanner_map); |
| 841 | final String id; |
| 842 | if (scanners != null) { |
| 843 | id = scanners.get(scanner.getKey()); |
| 844 | } else { |
| 845 | id = null; |
| 846 | } |
| 847 | scanner_map.put("scannerId", id); |
| 848 | /* Uncomment when AsyncHBase supports this |
| 849 | final Map<Integer, Set<String>> servers = scanner_servers.get(index); |
| 850 | if (servers != null) { |
| 851 | scanner_map.put("regionServers", servers.get(scanner.getKey())); |
| 852 | } else { |
| 853 | scanner_map.put("regionServers", null); |
| 854 | } |
| 855 | */ |
| 856 | final Iterator<Entry<QueryStat, Long>> scanner_stats_it = |
| 857 | scanner.getValue().entrySet().iterator(); |
| 858 | while (scanner_stats_it.hasNext()) { |
| 859 | final Entry<QueryStat, Long> scanner_stats = scanner_stats_it.next(); |