Loading skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/chainbuild/entity/CallChainTreeNode.java +81 −10 Original line number Diff line number Diff line Loading @@ -30,31 +30,102 @@ public class CallChainTreeNode { * key: treeId + 小时 * value: 当前树的当前小时范围内的,所有分钟和节点的统计数据 */ private Map<String, ChainNodeSpecificMinSummary> chainNodeContainer; private Map<String, ChainNodeSpecificMinSummary> chainNodeSpecificMinSummaryContainer; /** * key: treeId + 天 * value: 当前树的当前天范围内的,所有小时和节点的统计数据 */ private Map<String, ChainNodeSpecificHourSummary> chainNodeSpecificHourSummaryContainer; /** * key: treeId + 月 * value: 当前树的当前月范围内的,所有天和节点的统计数据 */ private Map<String, ChainNodeSpecificDaySummary> chainNodeSpecificDaySummaryContainer; /** * key: treeId + 年 * value: 当前树的当前年范围内的,所有月份和节点的统计数据 */ private Map<String, ChainNodeSpecificMonthSummary> chainNodeSpecificMonthSummaryContainer; public CallChainTreeNode(ChainNode node) { this.traceLevelId = node.getTraceLevelId(); chainNodeContainer = new HashMap<String, ChainNodeSpecificMinSummary>(); chainNodeSpecificMinSummaryContainer = new HashMap<String, ChainNodeSpecificMinSummary>(); chainNodeSpecificHourSummaryContainer = new HashMap<String, ChainNodeSpecificHourSummary>(); chainNodeSpecificDaySummaryContainer = new HashMap<String, ChainNodeSpecificDaySummary>(); chainNodeSpecificMonthSummaryContainer = new HashMap<String, ChainNodeSpecificMonthSummary>(); this.viewPointId = node.getViewPoint(); } public void summary(String treeId, ChainNode node) throws IOException { Calendar calendar = Calendar.getInstance(); calendar.setTime(new Date(node.getStartDate())); summaryMinResult(treeId, node, calendar); summaryHourResult(treeId, node, calendar); summaryDayResult(treeId, node, calendar); summaryMonthResult(treeId, node, calendar); } private void summaryMonthResult(String treeId, ChainNode node, Calendar calendar) { String keyOfMonthSummaryTable = generateKeyOfMonthSummaryTable(treeId, calendar); ChainNodeSpecificMonthSummary monthSummary = chainNodeSpecificMonthSummaryContainer.get(keyOfMonthSummaryTable); if (monthSummary == null) { monthSummary = HBaseUtil.loadSpecificMonthSummary(keyOfMonthSummaryTable, getTreeNodeId()); chainNodeSpecificMonthSummaryContainer.put(keyOfMonthSummaryTable, monthSummary); } monthSummary.summary(String.valueOf(calendar.get(Calendar.YEAR)), node); } private void summaryDayResult(String treeId, ChainNode node, Calendar calendar) { String keyOfDaySummaryTable = generateKeyOfDaySummaryTable(treeId, calendar); ChainNodeSpecificDaySummary daySummary = chainNodeSpecificDaySummaryContainer.get(keyOfDaySummaryTable); if (daySummary == null) { daySummary = HBaseUtil.loadSpecificDaySummary(keyOfDaySummaryTable, getTreeNodeId()); chainNodeSpecificDaySummaryContainer.put(keyOfDaySummaryTable, daySummary); } daySummary.summary(String.valueOf(calendar.get(Calendar.DAY_OF_MONTH)), node); } private void summaryHourResult(String treeId, ChainNode node, Calendar calendar) { String keyOfHourSummaryTable = generateKeyOfHourSummaryTable(treeId, calendar); ChainNodeSpecificHourSummary hourSummary = chainNodeSpecificHourSummaryContainer.get(keyOfHourSummaryTable); if (hourSummary == null) { hourSummary = HBaseUtil.loadSpecificHourSummary(keyOfHourSummaryTable, getTreeNodeId()); chainNodeSpecificHourSummaryContainer.put(keyOfHourSummaryTable, hourSummary); } hourSummary.summary(String.valueOf(calendar.get(Calendar.HOUR)), node); } /** * 按分钟维度进行汇总<br/> * chainNodeContainer以treeId和时间(精确到分钟)为key,value为当前时间范围内的所有分钟的汇总数据 */ private void summaryMinResult(String treeId, ChainNode node, Calendar calendar) throws IOException { String keyOfMinSummaryTable = generateKeyOfMinSummaryTable(treeId, calendar); ChainNodeSpecificMinSummary minSummary = chainNodeContainer.get(keyOfMinSummaryTable); ChainNodeSpecificMinSummary minSummary = chainNodeSpecificMinSummaryContainer.get(keyOfMinSummaryTable); if (minSummary == null) { minSummary = HBaseUtil.loadSpecificMinSummary(keyOfMinSummaryTable, getTreeNodeId()); chainNodeContainer.put(keyOfMinSummaryTable, minSummary); chainNodeSpecificMinSummaryContainer.put(keyOfMinSummaryTable, minSummary); } minSummary.summary(String.valueOf(calendar.get(Calendar.MINUTE)), node); } private String generateKeyOfMonthSummaryTable(String treeId, Calendar calendar) { return treeId + "/" + calendar.get(Calendar.YEAR); } private String generateKeyOfDaySummaryTable(String treeId, Calendar calendar) { return treeId + "/" + calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1); } private String generateKeyOfHourSummaryTable(String treeId, Calendar calendar) { return treeId + "/" + calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1) + "-" + calendar.get(Calendar.DAY_OF_MONTH); } private String generateKeyOfMinSummaryTable(String treeId, Calendar calendar) { return treeId + "/" + calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1) + "-" + calendar.get(Calendar.DAY_OF_MONTH) + " " + calendar.get(Calendar.HOUR) + ":00:00"; Loading @@ -76,7 +147,7 @@ public class CallChainTreeNode { */ public void saveSummaryResultToHBase() throws IOException, InterruptedException { List<Put> puts = new ArrayList<Put>(); for (Map.Entry<String, ChainNodeSpecificMinSummary> entry : chainNodeContainer.entrySet()) { for (Map.Entry<String, ChainNodeSpecificMinSummary> entry : chainNodeSpecificMinSummaryContainer.entrySet()) { Put put = new Put(entry.getKey().getBytes()); put.addColumn(HBaseTableMetaData.TABLE_CHAIN_ONE_MINUTE_SUMMARY.COLUMN_FAMILY_NAME.getBytes() , getTreeNodeId().getBytes(), entry.getValue().toString().getBytes()); Loading skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/chainbuild/entity/ChainNodeSpecificDaySummary.java 0 → 100644 +47 −0 Original line number Diff line number Diff line package com.ai.cloud.skywalking.analysis.chainbuild.entity; import com.ai.cloud.skywalking.analysis.chainbuild.po.ChainNode; import com.google.gson.Gson; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.google.gson.reflect.TypeToken; import java.util.HashMap; import java.util.Map; /** * Created by xin on 16-3-10. */ public class ChainNodeSpecificDaySummary { /** * key : 天 */ private Map<String, ChainNodeSpecificTimeWindowSummaryValue> summaryValueMap; public ChainNodeSpecificDaySummary(String originData) { JsonObject jsonObject = (JsonObject) new JsonParser().parse(originData); summaryValueMap = new Gson().fromJson(jsonObject.get("summaryValueMap").toString(), new TypeToken<Map<String, ChainNodeSpecificTimeWindowSummaryValue>>() { }.getType()); } public ChainNodeSpecificDaySummary() { summaryValueMap = new HashMap<String, ChainNodeSpecificTimeWindowSummaryValue>(); } public void summary(String minute, ChainNode node) { ChainNodeSpecificTimeWindowSummaryValue summarValue = summaryValueMap.get(minute); if (summarValue == null) { summarValue = new ChainNodeSpecificTimeWindowSummaryValue(); summaryValueMap.put(minute, summarValue); } summarValue.summary(node); } @Override public String toString() { return new Gson().toJson(this); } } skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/chainbuild/entity/ChainNodeSpecificHourSummary.java 0 → 100644 +43 −0 Original line number Diff line number Diff line package com.ai.cloud.skywalking.analysis.chainbuild.entity; import com.ai.cloud.skywalking.analysis.chainbuild.po.ChainNode; import com.google.gson.Gson; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.google.gson.reflect.TypeToken; import java.util.HashMap; import java.util.Map; public class ChainNodeSpecificHourSummary { /** * key : 小时 */ private Map<String, ChainNodeSpecificTimeWindowSummaryValue> summaryValueMap; public ChainNodeSpecificHourSummary(String originData) { JsonObject jsonObject = (JsonObject) new JsonParser().parse(originData); summaryValueMap = new Gson().fromJson(jsonObject.get("summaryValueMap").toString(), new TypeToken<Map<String, ChainNodeSpecificTimeWindowSummaryValue>>() { }.getType()); } public ChainNodeSpecificHourSummary() { summaryValueMap = new HashMap<String, ChainNodeSpecificTimeWindowSummaryValue>(); } public void summary(String minute, ChainNode node) { ChainNodeSpecificTimeWindowSummaryValue summarValue = summaryValueMap.get(minute); if (summarValue == null) { summarValue = new ChainNodeSpecificTimeWindowSummaryValue(); summaryValueMap.put(minute, summarValue); } summarValue.summary(node); } @Override public String toString() { return new Gson().toJson(this); } } skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/chainbuild/entity/ChainNodeSpecificMonthSummary.java 0 → 100644 +46 −0 Original line number Diff line number Diff line package com.ai.cloud.skywalking.analysis.chainbuild.entity; import com.ai.cloud.skywalking.analysis.chainbuild.po.ChainNode; import com.google.gson.Gson; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.google.gson.reflect.TypeToken; import java.util.HashMap; import java.util.Map; /** * Created by xin on 16-3-10. */ public class ChainNodeSpecificMonthSummary { /** * key : 月 */ private Map<String, ChainNodeSpecificTimeWindowSummaryValue> summaryValueMap; public ChainNodeSpecificMonthSummary(String originData) { JsonObject jsonObject = (JsonObject) new JsonParser().parse(originData); summaryValueMap = new Gson().fromJson(jsonObject.get("summaryValueMap").toString(), new TypeToken<Map<String, ChainNodeSpecificTimeWindowSummaryValue>>() { }.getType()); } public ChainNodeSpecificMonthSummary() { summaryValueMap = new HashMap<String, ChainNodeSpecificTimeWindowSummaryValue>(); } public void summary(String minute, ChainNode node) { ChainNodeSpecificTimeWindowSummaryValue summarValue = summaryValueMap.get(minute); if (summarValue == null) { summarValue = new ChainNodeSpecificTimeWindowSummaryValue(); summaryValueMap.put(minute, summarValue); } summarValue.summary(node); } @Override public String toString() { return new Gson().toJson(this); } } skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/chainbuild/util/HBaseUtil.java +15 −0 Original line number Diff line number Diff line Loading @@ -4,6 +4,9 @@ import java.io.IOException; import java.util.ArrayList; import java.util.List; import com.ai.cloud.skywalking.analysis.chainbuild.entity.ChainNodeSpecificDaySummary; import com.ai.cloud.skywalking.analysis.chainbuild.entity.ChainNodeSpecificHourSummary; import com.ai.cloud.skywalking.analysis.chainbuild.entity.ChainNodeSpecificMonthSummary; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.Cell; import org.apache.hadoop.hbase.HBaseConfiguration; Loading Loading @@ -155,4 +158,16 @@ public class HBaseUtil { index++; } } public static ChainNodeSpecificHourSummary loadSpecificHourSummary(String keyOfHourSummaryTable, String treeNodeId) { return null; } public static ChainNodeSpecificDaySummary loadSpecificDaySummary(String keyOfDaySummaryTable, String treeNodeId) { return null; } public static ChainNodeSpecificMonthSummary loadSpecificMonthSummary(String keyOfMonthSummaryTable, String treeNodeId) { return null; } } Loading
skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/chainbuild/entity/CallChainTreeNode.java +81 −10 Original line number Diff line number Diff line Loading @@ -30,31 +30,102 @@ public class CallChainTreeNode { * key: treeId + 小时 * value: 当前树的当前小时范围内的,所有分钟和节点的统计数据 */ private Map<String, ChainNodeSpecificMinSummary> chainNodeContainer; private Map<String, ChainNodeSpecificMinSummary> chainNodeSpecificMinSummaryContainer; /** * key: treeId + 天 * value: 当前树的当前天范围内的,所有小时和节点的统计数据 */ private Map<String, ChainNodeSpecificHourSummary> chainNodeSpecificHourSummaryContainer; /** * key: treeId + 月 * value: 当前树的当前月范围内的,所有天和节点的统计数据 */ private Map<String, ChainNodeSpecificDaySummary> chainNodeSpecificDaySummaryContainer; /** * key: treeId + 年 * value: 当前树的当前年范围内的,所有月份和节点的统计数据 */ private Map<String, ChainNodeSpecificMonthSummary> chainNodeSpecificMonthSummaryContainer; public CallChainTreeNode(ChainNode node) { this.traceLevelId = node.getTraceLevelId(); chainNodeContainer = new HashMap<String, ChainNodeSpecificMinSummary>(); chainNodeSpecificMinSummaryContainer = new HashMap<String, ChainNodeSpecificMinSummary>(); chainNodeSpecificHourSummaryContainer = new HashMap<String, ChainNodeSpecificHourSummary>(); chainNodeSpecificDaySummaryContainer = new HashMap<String, ChainNodeSpecificDaySummary>(); chainNodeSpecificMonthSummaryContainer = new HashMap<String, ChainNodeSpecificMonthSummary>(); this.viewPointId = node.getViewPoint(); } public void summary(String treeId, ChainNode node) throws IOException { Calendar calendar = Calendar.getInstance(); calendar.setTime(new Date(node.getStartDate())); summaryMinResult(treeId, node, calendar); summaryHourResult(treeId, node, calendar); summaryDayResult(treeId, node, calendar); summaryMonthResult(treeId, node, calendar); } private void summaryMonthResult(String treeId, ChainNode node, Calendar calendar) { String keyOfMonthSummaryTable = generateKeyOfMonthSummaryTable(treeId, calendar); ChainNodeSpecificMonthSummary monthSummary = chainNodeSpecificMonthSummaryContainer.get(keyOfMonthSummaryTable); if (monthSummary == null) { monthSummary = HBaseUtil.loadSpecificMonthSummary(keyOfMonthSummaryTable, getTreeNodeId()); chainNodeSpecificMonthSummaryContainer.put(keyOfMonthSummaryTable, monthSummary); } monthSummary.summary(String.valueOf(calendar.get(Calendar.YEAR)), node); } private void summaryDayResult(String treeId, ChainNode node, Calendar calendar) { String keyOfDaySummaryTable = generateKeyOfDaySummaryTable(treeId, calendar); ChainNodeSpecificDaySummary daySummary = chainNodeSpecificDaySummaryContainer.get(keyOfDaySummaryTable); if (daySummary == null) { daySummary = HBaseUtil.loadSpecificDaySummary(keyOfDaySummaryTable, getTreeNodeId()); chainNodeSpecificDaySummaryContainer.put(keyOfDaySummaryTable, daySummary); } daySummary.summary(String.valueOf(calendar.get(Calendar.DAY_OF_MONTH)), node); } private void summaryHourResult(String treeId, ChainNode node, Calendar calendar) { String keyOfHourSummaryTable = generateKeyOfHourSummaryTable(treeId, calendar); ChainNodeSpecificHourSummary hourSummary = chainNodeSpecificHourSummaryContainer.get(keyOfHourSummaryTable); if (hourSummary == null) { hourSummary = HBaseUtil.loadSpecificHourSummary(keyOfHourSummaryTable, getTreeNodeId()); chainNodeSpecificHourSummaryContainer.put(keyOfHourSummaryTable, hourSummary); } hourSummary.summary(String.valueOf(calendar.get(Calendar.HOUR)), node); } /** * 按分钟维度进行汇总<br/> * chainNodeContainer以treeId和时间(精确到分钟)为key,value为当前时间范围内的所有分钟的汇总数据 */ private void summaryMinResult(String treeId, ChainNode node, Calendar calendar) throws IOException { String keyOfMinSummaryTable = generateKeyOfMinSummaryTable(treeId, calendar); ChainNodeSpecificMinSummary minSummary = chainNodeContainer.get(keyOfMinSummaryTable); ChainNodeSpecificMinSummary minSummary = chainNodeSpecificMinSummaryContainer.get(keyOfMinSummaryTable); if (minSummary == null) { minSummary = HBaseUtil.loadSpecificMinSummary(keyOfMinSummaryTable, getTreeNodeId()); chainNodeContainer.put(keyOfMinSummaryTable, minSummary); chainNodeSpecificMinSummaryContainer.put(keyOfMinSummaryTable, minSummary); } minSummary.summary(String.valueOf(calendar.get(Calendar.MINUTE)), node); } private String generateKeyOfMonthSummaryTable(String treeId, Calendar calendar) { return treeId + "/" + calendar.get(Calendar.YEAR); } private String generateKeyOfDaySummaryTable(String treeId, Calendar calendar) { return treeId + "/" + calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1); } private String generateKeyOfHourSummaryTable(String treeId, Calendar calendar) { return treeId + "/" + calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1) + "-" + calendar.get(Calendar.DAY_OF_MONTH); } private String generateKeyOfMinSummaryTable(String treeId, Calendar calendar) { return treeId + "/" + calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1) + "-" + calendar.get(Calendar.DAY_OF_MONTH) + " " + calendar.get(Calendar.HOUR) + ":00:00"; Loading @@ -76,7 +147,7 @@ public class CallChainTreeNode { */ public void saveSummaryResultToHBase() throws IOException, InterruptedException { List<Put> puts = new ArrayList<Put>(); for (Map.Entry<String, ChainNodeSpecificMinSummary> entry : chainNodeContainer.entrySet()) { for (Map.Entry<String, ChainNodeSpecificMinSummary> entry : chainNodeSpecificMinSummaryContainer.entrySet()) { Put put = new Put(entry.getKey().getBytes()); put.addColumn(HBaseTableMetaData.TABLE_CHAIN_ONE_MINUTE_SUMMARY.COLUMN_FAMILY_NAME.getBytes() , getTreeNodeId().getBytes(), entry.getValue().toString().getBytes()); Loading
skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/chainbuild/entity/ChainNodeSpecificDaySummary.java 0 → 100644 +47 −0 Original line number Diff line number Diff line package com.ai.cloud.skywalking.analysis.chainbuild.entity; import com.ai.cloud.skywalking.analysis.chainbuild.po.ChainNode; import com.google.gson.Gson; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.google.gson.reflect.TypeToken; import java.util.HashMap; import java.util.Map; /** * Created by xin on 16-3-10. */ public class ChainNodeSpecificDaySummary { /** * key : 天 */ private Map<String, ChainNodeSpecificTimeWindowSummaryValue> summaryValueMap; public ChainNodeSpecificDaySummary(String originData) { JsonObject jsonObject = (JsonObject) new JsonParser().parse(originData); summaryValueMap = new Gson().fromJson(jsonObject.get("summaryValueMap").toString(), new TypeToken<Map<String, ChainNodeSpecificTimeWindowSummaryValue>>() { }.getType()); } public ChainNodeSpecificDaySummary() { summaryValueMap = new HashMap<String, ChainNodeSpecificTimeWindowSummaryValue>(); } public void summary(String minute, ChainNode node) { ChainNodeSpecificTimeWindowSummaryValue summarValue = summaryValueMap.get(minute); if (summarValue == null) { summarValue = new ChainNodeSpecificTimeWindowSummaryValue(); summaryValueMap.put(minute, summarValue); } summarValue.summary(node); } @Override public String toString() { return new Gson().toJson(this); } }
skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/chainbuild/entity/ChainNodeSpecificHourSummary.java 0 → 100644 +43 −0 Original line number Diff line number Diff line package com.ai.cloud.skywalking.analysis.chainbuild.entity; import com.ai.cloud.skywalking.analysis.chainbuild.po.ChainNode; import com.google.gson.Gson; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.google.gson.reflect.TypeToken; import java.util.HashMap; import java.util.Map; public class ChainNodeSpecificHourSummary { /** * key : 小时 */ private Map<String, ChainNodeSpecificTimeWindowSummaryValue> summaryValueMap; public ChainNodeSpecificHourSummary(String originData) { JsonObject jsonObject = (JsonObject) new JsonParser().parse(originData); summaryValueMap = new Gson().fromJson(jsonObject.get("summaryValueMap").toString(), new TypeToken<Map<String, ChainNodeSpecificTimeWindowSummaryValue>>() { }.getType()); } public ChainNodeSpecificHourSummary() { summaryValueMap = new HashMap<String, ChainNodeSpecificTimeWindowSummaryValue>(); } public void summary(String minute, ChainNode node) { ChainNodeSpecificTimeWindowSummaryValue summarValue = summaryValueMap.get(minute); if (summarValue == null) { summarValue = new ChainNodeSpecificTimeWindowSummaryValue(); summaryValueMap.put(minute, summarValue); } summarValue.summary(node); } @Override public String toString() { return new Gson().toJson(this); } }
skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/chainbuild/entity/ChainNodeSpecificMonthSummary.java 0 → 100644 +46 −0 Original line number Diff line number Diff line package com.ai.cloud.skywalking.analysis.chainbuild.entity; import com.ai.cloud.skywalking.analysis.chainbuild.po.ChainNode; import com.google.gson.Gson; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.google.gson.reflect.TypeToken; import java.util.HashMap; import java.util.Map; /** * Created by xin on 16-3-10. */ public class ChainNodeSpecificMonthSummary { /** * key : 月 */ private Map<String, ChainNodeSpecificTimeWindowSummaryValue> summaryValueMap; public ChainNodeSpecificMonthSummary(String originData) { JsonObject jsonObject = (JsonObject) new JsonParser().parse(originData); summaryValueMap = new Gson().fromJson(jsonObject.get("summaryValueMap").toString(), new TypeToken<Map<String, ChainNodeSpecificTimeWindowSummaryValue>>() { }.getType()); } public ChainNodeSpecificMonthSummary() { summaryValueMap = new HashMap<String, ChainNodeSpecificTimeWindowSummaryValue>(); } public void summary(String minute, ChainNode node) { ChainNodeSpecificTimeWindowSummaryValue summarValue = summaryValueMap.get(minute); if (summarValue == null) { summarValue = new ChainNodeSpecificTimeWindowSummaryValue(); summaryValueMap.put(minute, summarValue); } summarValue.summary(node); } @Override public String toString() { return new Gson().toJson(this); } }
skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/chainbuild/util/HBaseUtil.java +15 −0 Original line number Diff line number Diff line Loading @@ -4,6 +4,9 @@ import java.io.IOException; import java.util.ArrayList; import java.util.List; import com.ai.cloud.skywalking.analysis.chainbuild.entity.ChainNodeSpecificDaySummary; import com.ai.cloud.skywalking.analysis.chainbuild.entity.ChainNodeSpecificHourSummary; import com.ai.cloud.skywalking.analysis.chainbuild.entity.ChainNodeSpecificMonthSummary; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.Cell; import org.apache.hadoop.hbase.HBaseConfiguration; Loading Loading @@ -155,4 +158,16 @@ public class HBaseUtil { index++; } } public static ChainNodeSpecificHourSummary loadSpecificHourSummary(String keyOfHourSummaryTable, String treeNodeId) { return null; } public static ChainNodeSpecificDaySummary loadSpecificDaySummary(String keyOfDaySummaryTable, String treeNodeId) { return null; } public static ChainNodeSpecificMonthSummary loadSpecificMonthSummary(String keyOfMonthSummaryTable, String treeNodeId) { return null; } }