Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
SkyWalking
提交
5e16ece3
S
SkyWalking
项目概览
apache
/
SkyWalking
上一次同步 1 年多
通知
302
Star
21345
Fork
6091
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
SkyWalking
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
5e16ece3
编写于
5月 20, 2016
作者:
A
ascrutae
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
修复统计结果不准确的问题
上级
31df970e
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
245 addition
and
245 deletion
+245
-245
skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/chainbuild/entity/CallChainTreeNode.java
...walking/analysis/chainbuild/entity/CallChainTreeNode.java
+241
-241
skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/chainbuild/util/HBaseUtil.java
.../cloud/skywalking/analysis/chainbuild/util/HBaseUtil.java
+4
-4
未找到文件。
skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/chainbuild/entity/CallChainTreeNode.java
浏览文件 @
5e16ece3
...
...
@@ -21,269 +21,269 @@ import java.util.*;
* @author wusheng
*/
public
class
CallChainTreeNode
{
private
Logger
logger
=
LogManager
.
getLogger
(
CallChainTreeNode
.
class
);
private
Logger
logger
=
LogManager
.
getLogger
(
CallChainTreeNode
.
class
);
@Expose
private
String
traceLevelId
;
@Expose
private
String
viewPointId
;
@Expose
private
String
traceLevelId
;
@Expose
private
String
viewPointId
;
/**
* key: treeId + 小时 value: 当前树的当前小时范围内的,所有分钟和节点的统计数据
*/
private
Map
<
String
,
ChainNodeSpecificMinSummary
>
chainNodeSpecificMinSummaryContainer
;
/**
* key: treeId + 小时 value: 当前树的当前小时范围内的,所有分钟和节点的统计数据
*/
private
Map
<
String
,
ChainNodeSpecificMinSummary
>
chainNodeSpecificMinSummaryContainer
;
/**
* key: treeId + 天 value: 当前树的当前天范围内的,所有小时和节点的统计数据
*/
private
Map
<
String
,
ChainNodeSpecificHourSummary
>
chainNodeSpecificHourSummaryContainer
;
/**
* key: treeId + 天 value: 当前树的当前天范围内的,所有小时和节点的统计数据
*/
private
Map
<
String
,
ChainNodeSpecificHourSummary
>
chainNodeSpecificHourSummaryContainer
;
/**
* key: treeId + 月 value: 当前树的当前月范围内的,所有天和节点的统计数据
*/
private
Map
<
String
,
ChainNodeSpecificDaySummary
>
chainNodeSpecificDaySummaryContainer
;
/**
* key: treeId + 月 value: 当前树的当前月范围内的,所有天和节点的统计数据
*/
private
Map
<
String
,
ChainNodeSpecificDaySummary
>
chainNodeSpecificDaySummaryContainer
;
/**
* key: treeId + 年 value: 当前树的当前年范围内的,所有月份和节点的统计数据
*/
private
Map
<
String
,
ChainNodeSpecificMonthSummary
>
chainNodeSpecificMonthSummaryContainer
;
/**
* key: treeId + 年 value: 当前树的当前年范围内的,所有月份和节点的统计数据
*/
private
Map
<
String
,
ChainNodeSpecificMonthSummary
>
chainNodeSpecificMonthSummaryContainer
;
public
CallChainTreeNode
(
ChainNode
node
)
{
this
.
traceLevelId
=
node
.
getTraceLevelId
();
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
CallChainTreeNode
(
ChainNode
node
)
{
this
.
traceLevelId
=
node
.
getTraceLevelId
();
chainNodeSpecificMinSummaryContainer
=
new
HashMap
<
String
,
ChainNodeSpecificMinSummary
>();
chainNodeSpecificHourSummaryContainer
=
new
HashMap
<
String
,
ChainNodeSpecificHourSummary
>();
chainNodeSpecificDaySummaryContainer
=
new
HashMap
<
String
,
ChainNodeSpecificDaySummary
>();
chainNodeSpecificMonthSummaryContainer
=
new
HashMap
<
String
,
ChainNodeSpecificMonthSummary
>();
this
.
viewPointId
=
node
.
getViewPoint
();
}
/**
* 针对节点、汇总类型,进行数据汇总。<br/>
* 已汇总数据加载使用lazy load模式,只有此次汇总过程中触发的数据节点统计数量,才会被读取<br/>
*
* @param treeId
* @param node
* @param summaryType
* @param summaryDate
* @throws IOException
*/
public
void
summary
(
String
treeId
,
ChainNode
node
,
SummaryType
summaryType
,
String
summaryDate
)
throws
IOException
{
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setTime
(
new
Date
(
node
.
getStartDate
()));
switch
(
summaryType
)
{
case
HOUR:
{
summaryMinResult
(
treeId
,
node
,
calendar
,
summaryDate
);
break
;
}
case
DAY:
{
summaryHourResult
(
treeId
,
node
,
calendar
,
summaryDate
);
break
;
}
case
MONTH:
{
summaryDayResult
(
treeId
,
node
,
calendar
,
summaryDate
);
break
;
}
case
YEAR:
{
summaryMonthResult
(
treeId
,
node
,
calendar
,
summaryDate
);
break
;
}
default
:
{
logger
.
error
(
"unknown summary type :{}"
,
summaryType
);
break
;
}
}
/**
* 针对节点、汇总类型,进行数据汇总。<br/>
* 已汇总数据加载使用lazy load模式,只有此次汇总过程中触发的数据节点统计数量,才会被读取<br/>
*
* @param treeId
* @param node
* @param summaryType
* @param summaryDate
* @throws IOException
*/
public
void
summary
(
String
treeId
,
ChainNode
node
,
SummaryType
summaryType
,
String
summaryDate
)
throws
IOException
{
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setTime
(
new
Date
(
node
.
getStartDate
()));
switch
(
summaryType
)
{
case
HOUR:
{
summaryMinResult
(
treeId
,
node
,
calendar
,
summaryDate
);
break
;
}
case
DAY:
{
summaryHourResult
(
treeId
,
node
,
calendar
,
summaryDate
);
break
;
}
case
MONTH:
{
summaryDayResult
(
treeId
,
node
,
calendar
,
summaryDate
);
break
;
}
case
YEAR:
{
summaryMonthResult
(
treeId
,
node
,
calendar
,
summaryDate
);
break
;
}
default
:
{
logger
.
error
(
"unknown summary type :{}"
,
summaryType
);
break
;
}
}
}
}
private
void
summaryMonthResult
(
String
treeId
,
ChainNode
node
,
Calendar
calendar
,
String
summaryDate
)
throws
IOException
{
String
keyOfMonthSummaryTable
=
generateRowKey
(
treeId
,
summaryDate
);
ChainNodeSpecificMonthSummary
monthSummary
=
chainNodeSpecificMonthSummaryContainer
.
get
(
keyOfMonthSummaryTable
);
if
(
monthSummary
==
null
)
{
if
(
Config
.
AnalysisServer
.
IS_ACCUMULATE_MODE
)
{
monthSummary
=
HBaseUtil
.
loadSpecificMonthSummary
(
keyOfMonthSummaryTable
,
getTreeNodeId
());
}
else
{
monthSummary
=
new
ChainNodeSpecificMonthSummary
();
}
chainNodeSpecificMonthSummaryContainer
.
put
(
keyOfMonthSummaryTable
,
monthSummary
);
}
monthSummary
.
summary
(
String
.
valueOf
(
calendar
.
get
(
Calendar
.
MONTH
)
+
1
),
node
);
}
private
void
summaryMonthResult
(
String
treeId
,
ChainNode
node
,
Calendar
calendar
,
String
summaryDate
)
throws
IOException
{
String
keyOfMonthSummaryTable
=
generateRowKey
(
treeId
,
summaryDate
);
ChainNodeSpecificMonthSummary
monthSummary
=
chainNodeSpecificMonthSummaryContainer
.
get
(
keyOfMonthSummaryTable
);
if
(
monthSummary
==
null
)
{
if
(
Config
.
AnalysisServer
.
IS_ACCUMULATE_MODE
)
{
monthSummary
=
HBaseUtil
.
loadSpecificMonthSummary
(
keyOfMonthSummaryTable
,
getTreeNodeId
());
}
else
{
monthSummary
=
new
ChainNodeSpecificMonthSummary
();
}
chainNodeSpecificMonthSummaryContainer
.
put
(
keyOfMonthSummaryTable
,
monthSummary
);
}
monthSummary
.
summary
(
String
.
valueOf
(
calendar
.
get
(
Calendar
.
MONTH
)
+
1
),
node
);
}
private
void
summaryDayResult
(
String
treeId
,
ChainNode
node
,
Calendar
calendar
,
String
summaryDate
)
throws
IOException
{
String
keyOfDaySummaryTable
=
generateRowKey
(
treeId
,
summaryDate
);
ChainNodeSpecificDaySummary
daySummary
=
chainNodeSpecificDaySummaryContainer
.
get
(
keyOfDaySummaryTable
);
if
(
daySummary
==
null
)
{
if
(
Config
.
AnalysisServer
.
IS_ACCUMULATE_MODE
)
{
daySummary
=
HBaseUtil
.
loadSpecificDaySummary
(
keyOfDaySummaryTable
,
getTreeNodeId
());
}
else
{
daySummary
=
new
ChainNodeSpecificDaySummary
();
}
chainNodeSpecificDaySummaryContainer
.
put
(
keyOfDaySummaryTable
,
daySummary
);
}
daySummary
.
summary
(
String
.
valueOf
(
calendar
.
get
(
Calendar
.
DAY_OF_MONTH
)),
node
);
}
private
void
summaryDayResult
(
String
treeId
,
ChainNode
node
,
Calendar
calendar
,
String
summaryDate
)
throws
IOException
{
String
keyOfDaySummaryTable
=
generateRowKey
(
treeId
,
summaryDate
);
ChainNodeSpecificDaySummary
daySummary
=
chainNodeSpecificDaySummaryContainer
.
get
(
keyOfDaySummaryTable
);
if
(
daySummary
==
null
)
{
if
(
Config
.
AnalysisServer
.
IS_ACCUMULATE_MODE
)
{
daySummary
=
HBaseUtil
.
loadSpecificDaySummary
(
keyOfDaySummaryTable
,
getTreeNodeId
());
}
else
{
daySummary
=
new
ChainNodeSpecificDaySummary
();
}
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
summaryDate
)
throws
IOException
{
String
keyOfHourSummaryTable
=
generateRowKey
(
treeId
,
summaryDate
);
ChainNodeSpecificHourSummary
hourSummary
=
chainNodeSpecificHourSummaryContainer
.
get
(
keyOfHourSummaryTable
);
if
(
hourSummary
==
null
)
{
if
(
Config
.
AnalysisServer
.
IS_ACCUMULATE_MODE
)
{
hourSummary
=
HBaseUtil
.
loadSpecificHourSummary
(
keyOfHourSummaryTable
,
getTreeNodeId
());
}
else
{
hourSummary
=
new
ChainNodeSpecificHourSummary
();
}
chainNodeSpecificHourSummaryContainer
.
put
(
keyOfHourSummaryTable
,
hourSummary
);
}
hourSummary
.
summary
(
String
.
valueOf
(
calendar
.
get
(
Calendar
.
HOUR
)),
node
);
}
private
void
summaryHourResult
(
String
treeId
,
ChainNode
node
,
Calendar
calendar
,
String
summaryDate
)
throws
IOException
{
String
keyOfHourSummaryTable
=
generateRowKey
(
treeId
,
summaryDate
);
ChainNodeSpecificHourSummary
hourSummary
=
chainNodeSpecificHourSummaryContainer
.
get
(
keyOfHourSummaryTable
);
if
(
hourSummary
==
null
)
{
if
(
Config
.
AnalysisServer
.
IS_ACCUMULATE_MODE
)
{
hourSummary
=
HBaseUtil
.
loadSpecificHourSummary
(
keyOfHourSummaryTable
,
getTreeNodeId
());
}
else
{
hourSummary
=
new
ChainNodeSpecificHourSummary
();
}
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
,
String
summaryDate
)
throws
IOException
{
String
keyOfMinSummaryTable
=
generateRowKey
(
treeId
,
summaryDate
);
ChainNodeSpecificMinSummary
minSummary
=
chainNodeSpecificMinSummaryContainer
.
get
(
keyOfMinSummaryTable
);
if
(
minSummary
==
null
)
{
if
(
Config
.
AnalysisServer
.
IS_ACCUMULATE_MODE
)
{
minSummary
=
HBaseUtil
.
loadSpecificMinSummary
(
keyOfMinSummaryTable
,
getTreeNodeId
());
}
else
{
minSummary
=
new
ChainNodeSpecificMinSummary
();
}
chainNodeSpecificMinSummaryContainer
.
put
(
keyOfMinSummaryTable
,
minSummary
);
}
minSummary
.
summary
(
String
.
valueOf
(
calendar
.
get
(
Calendar
.
MINUTE
)),
node
);
}
/**
* 按分钟维度进行汇总<br/>
* chainNodeContainer以treeId和时间(精确到分钟)为key,value为当前时间范围内的所有分钟的汇总数据
*/
private
void
summaryMinResult
(
String
treeId
,
ChainNode
node
,
Calendar
calendar
,
String
summaryDate
)
throws
IOException
{
String
keyOfMinSummaryTable
=
generateRowKey
(
treeId
,
summaryDate
);
ChainNodeSpecificMinSummary
minSummary
=
chainNodeSpecificMinSummaryContainer
.
get
(
keyOfMinSummaryTable
);
if
(
minSummary
==
null
)
{
if
(
Config
.
AnalysisServer
.
IS_ACCUMULATE_MODE
)
{
minSummary
=
HBaseUtil
.
loadSpecificMinSummary
(
keyOfMinSummaryTable
,
getTreeNodeId
());
}
else
{
minSummary
=
new
ChainNodeSpecificMinSummary
();
}
chainNodeSpecificMinSummaryContainer
.
put
(
keyOfMinSummaryTable
,
minSummary
);
}
minSummary
.
summary
(
String
.
valueOf
(
calendar
.
get
(
Calendar
.
MINUTE
)),
node
);
}
private
String
generateRowKey
(
String
treeId
,
String
dateKey
)
{
return
treeId
+
"/"
+
dateKey
;
}
private
String
generateRowKey
(
String
treeId
,
String
dateKey
)
{
return
treeId
+
"/"
+
dateKey
;
}
@Override
public
String
toString
()
{
return
new
GsonBuilder
().
excludeFieldsWithoutExposeAnnotation
()
.
create
().
toJson
(
this
);
}
@Override
public
String
toString
()
{
return
new
GsonBuilder
().
excludeFieldsWithoutExposeAnnotation
()
.
create
().
toJson
(
this
);
}
/**
* 存储入库时 <br/>
* hbase的key 为 treeId + 小时 <br/>
* 列族中,列为节点id,规则为:traceLevelId + "@" + viewPointId <br/>
* 列的值,为当前节点按小时内各分钟的汇总 <br/>
*
* @throws IOException
* @throws InterruptedException
*/
public
void
saveSummaryResultToHBase
(
SummaryType
summaryType
)
throws
IOException
,
InterruptedException
{
switch
(
summaryType
)
{
case
HOUR:
{
batchSaveMinSummaryResult
();
break
;
}
case
DAY:
{
batchSaveHourSummaryResult
();
break
;
}
case
MONTH:
{
batchSaveDaySummaryResult
();
break
;
}
case
YEAR:
{
batchSaveMonthSummaryResult
();
break
;
}
default
:
{
logger
.
error
(
"unknown summary type :{}"
,
summaryType
);
break
;
}
}
}
/**
* 存储入库时 <br/>
* hbase的key 为 treeId + 小时 <br/>
* 列族中,列为节点id,规则为:traceLevelId + "@" + viewPointId <br/>
* 列的值,为当前节点按小时内各分钟的汇总 <br/>
*
* @throws IOException
* @throws InterruptedException
*/
public
void
saveSummaryResultToHBase
(
SummaryType
summaryType
)
throws
IOException
,
InterruptedException
{
switch
(
summaryType
)
{
case
HOUR:
{
batchSaveMinSummaryResult
();
break
;
}
case
DAY:
{
batchSaveHourSummaryResult
();
break
;
}
case
MONTH:
{
batchSaveDaySummaryResult
();
break
;
}
case
YEAR:
{
batchSaveMonthSummaryResult
();
break
;
}
default
:
{
logger
.
error
(
"unknown summary type :{}"
,
summaryType
);
break
;
}
}
}
private
void
batchSaveMonthSummaryResult
()
throws
IOException
,
InterruptedException
{
List
<
Put
>
puts
=
new
ArrayList
<
Put
>();
for
(
Map
.
Entry
<
String
,
ChainNodeSpecificMonthSummary
>
entry
:
chainNodeSpecificMonthSummaryContainer
.
entrySet
())
{
Put
put
=
new
Put
(
entry
.
getKey
().
getBytes
());
put
.
addColumn
(
HBaseTableMetaData
.
TABLE_CHAIN_ONE_MONTH_SUMMARY
.
COLUMN_FAMILY_NAME
.
getBytes
(),
getTreeNodeId
().
getBytes
(),
entry
.
getValue
().
toString
().
getBytes
());
puts
.
add
(
put
);
}
private
void
batchSaveMonthSummaryResult
()
throws
IOException
,
InterruptedException
{
List
<
Put
>
puts
=
new
ArrayList
<
Put
>();
for
(
Map
.
Entry
<
String
,
ChainNodeSpecificMonthSummary
>
entry
:
chainNodeSpecificMonthSummaryContainer
.
entrySet
())
{
Put
put
=
new
Put
(
entry
.
getKey
().
getBytes
());
put
.
addColumn
(
HBaseTableMetaData
.
TABLE_CHAIN_ONE_MONTH_SUMMARY
.
COLUMN_FAMILY_NAME
.
getBytes
(),
getTreeNodeId
().
getBytes
(),
entry
.
getValue
().
toString
().
getBytes
());
puts
.
add
(
put
);
}
HBaseUtil
.
batchSaveMonthSummaryResult
(
puts
);
}
HBaseUtil
.
batchSaveMonthSummaryResult
(
puts
);
}
private
void
batchSaveDaySummaryResult
()
throws
IOException
,
InterruptedException
{
List
<
Put
>
puts
=
new
ArrayList
<
Put
>();
for
(
Map
.
Entry
<
String
,
ChainNodeSpecificDaySummary
>
entry
:
chainNodeSpecificDaySummaryContainer
.
entrySet
())
{
Put
put
=
new
Put
(
entry
.
getKey
().
getBytes
());
put
.
addColumn
(
HBaseTableMetaData
.
TABLE_CHAIN_ONE_DAY_SUMMARY
.
COLUMN_FAMILY_NAME
.
getBytes
(),
getTreeNodeId
().
getBytes
(),
entry
.
getValue
().
toString
().
getBytes
());
puts
.
add
(
put
);
}
private
void
batchSaveDaySummaryResult
()
throws
IOException
,
InterruptedException
{
List
<
Put
>
puts
=
new
ArrayList
<
Put
>();
for
(
Map
.
Entry
<
String
,
ChainNodeSpecificDaySummary
>
entry
:
chainNodeSpecificDaySummaryContainer
.
entrySet
())
{
Put
put
=
new
Put
(
entry
.
getKey
().
getBytes
());
put
.
addColumn
(
HBaseTableMetaData
.
TABLE_CHAIN_ONE_DAY_SUMMARY
.
COLUMN_FAMILY_NAME
.
getBytes
(),
getTreeNodeId
().
getBytes
(),
entry
.
getValue
().
toString
().
getBytes
());
puts
.
add
(
put
);
}
HBaseUtil
.
batchSaveDaySummaryResult
(
puts
);
}
HBaseUtil
.
batchSaveDaySummaryResult
(
puts
);
}
private
void
batchSaveHourSummaryResult
()
throws
IOException
,
InterruptedException
{
List
<
Put
>
puts
=
new
ArrayList
<
Put
>();
for
(
Map
.
Entry
<
String
,
ChainNodeSpecificHourSummary
>
entry
:
chainNodeSpecificHourSummaryContainer
.
entrySet
())
{
Put
put
=
new
Put
(
entry
.
getKey
().
getBytes
());
put
.
addColumn
(
HBaseTableMetaData
.
TABLE_CHAIN_ONE_HOUR_SUMMARY
.
COLUMN_FAMILY_NAME
.
getBytes
(),
getTreeNodeId
().
getBytes
(),
entry
.
getValue
().
toString
().
getBytes
());
puts
.
add
(
put
);
}
private
void
batchSaveHourSummaryResult
()
throws
IOException
,
InterruptedException
{
List
<
Put
>
puts
=
new
ArrayList
<
Put
>();
for
(
Map
.
Entry
<
String
,
ChainNodeSpecificHourSummary
>
entry
:
chainNodeSpecificHourSummaryContainer
.
entrySet
())
{
Put
put
=
new
Put
(
entry
.
getKey
().
getBytes
());
put
.
addColumn
(
HBaseTableMetaData
.
TABLE_CHAIN_ONE_HOUR_SUMMARY
.
COLUMN_FAMILY_NAME
.
getBytes
(),
getTreeNodeId
().
getBytes
(),
entry
.
getValue
().
toString
().
getBytes
());
puts
.
add
(
put
);
}
HBaseUtil
.
batchSaveHourSummaryResult
(
puts
);
}
HBaseUtil
.
batchSaveHourSummaryResult
(
puts
);
}
private
void
batchSaveMinSummaryResult
()
throws
IOException
,
InterruptedException
{
List
<
Put
>
puts
=
new
ArrayList
<
Put
>();
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
());
puts
.
add
(
put
);
}
private
void
batchSaveMinSummaryResult
()
throws
IOException
,
InterruptedException
{
List
<
Put
>
puts
=
new
ArrayList
<
Put
>();
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
());
puts
.
add
(
put
);
}
HBaseUtil
.
batchSaveMinSummaryResult
(
puts
);
}
HBaseUtil
.
batchSaveMinSummaryResult
(
puts
);
}
public
String
getTreeNodeId
()
{
return
traceLevelId
+
"@"
+
viewPointId
;
}
public
String
getTreeNodeId
()
{
return
traceLevelId
+
"@"
+
viewPointId
;
}
}
skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/chainbuild/util/HBaseUtil.java
浏览文件 @
5e16ece3
...
...
@@ -111,7 +111,7 @@ public class HBaseUtil {
return
new
ChainNodeSpecificHourSummary
();
}
Cell
cell
=
r
.
getColumnLatestCell
(
HBaseTableMetaData
.
TABLE_CHAIN_ONE_
MINUTE
_SUMMARY
.
COLUMN_FAMILY_NAME
.
getBytes
(),
Cell
cell
=
r
.
getColumnLatestCell
(
HBaseTableMetaData
.
TABLE_CHAIN_ONE_
HOUR
_SUMMARY
.
COLUMN_FAMILY_NAME
.
getBytes
(),
treeNodeId
.
getBytes
());
if
(
cell
!=
null
&&
cell
.
getValueArray
().
length
>
0
)
{
...
...
@@ -134,7 +134,7 @@ public class HBaseUtil {
return
new
ChainNodeSpecificDaySummary
();
}
Cell
cell
=
r
.
getColumnLatestCell
(
HBaseTableMetaData
.
TABLE_CHAIN_ONE_
MINUTE
_SUMMARY
.
COLUMN_FAMILY_NAME
.
getBytes
(),
Cell
cell
=
r
.
getColumnLatestCell
(
HBaseTableMetaData
.
TABLE_CHAIN_ONE_
DAY
_SUMMARY
.
COLUMN_FAMILY_NAME
.
getBytes
(),
treeNodeId
.
getBytes
());
if
(
cell
!=
null
&&
cell
.
getValueArray
().
length
>
0
)
{
...
...
@@ -149,7 +149,7 @@ public class HBaseUtil {
public
static
ChainNodeSpecificMonthSummary
loadSpecificMonthSummary
(
String
keyOfMonthSummaryTable
,
String
treeNodeId
)
throws
IOException
{
ChainNodeSpecificMonthSummary
result
=
null
;
Table
table
=
connection
.
getTable
(
TableName
.
valueOf
(
HBaseTableMetaData
.
TABLE_CHAIN_ONE_
DAY
_SUMMARY
.
TABLE_NAME
));
Table
table
=
connection
.
getTable
(
TableName
.
valueOf
(
HBaseTableMetaData
.
TABLE_CHAIN_ONE_
MONTH
_SUMMARY
.
TABLE_NAME
));
Get
g
=
new
Get
(
Bytes
.
toBytes
(
keyOfMonthSummaryTable
));
Result
r
=
table
.
get
(
g
);
...
...
@@ -157,7 +157,7 @@ public class HBaseUtil {
return
new
ChainNodeSpecificMonthSummary
();
}
Cell
cell
=
r
.
getColumnLatestCell
(
HBaseTableMetaData
.
TABLE_CHAIN_ONE_M
INUTE
_SUMMARY
.
COLUMN_FAMILY_NAME
.
getBytes
(),
Cell
cell
=
r
.
getColumnLatestCell
(
HBaseTableMetaData
.
TABLE_CHAIN_ONE_M
ONTH
_SUMMARY
.
COLUMN_FAMILY_NAME
.
getBytes
(),
treeNodeId
.
getBytes
());
if
(
cell
!=
null
&&
cell
.
getValueArray
().
length
>
0
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录