segmentGranularity 按天和按小时比较有效性能查询topN
Comparison effective performance query topN between segmentGranularity by day and by hour
我在 https://groups.google.com/forum/#!topic/druid-user/SYWcqcr504k 上问了我的问题
但是没有人帮助我解决这个问题。
我正在处理大型数据集。在 2 种情况下的 topN 查询(按天的 segmentGranularity 与按小时的 segmentGranularity)在 sam "queryGranularity" 上按 "hour".
案例 01:按天
"granularitySpec" : {
"type" : "uniform",
"segmentGranularity" : "day",
"queryGranularity" : "hour",
"intervals" : ["2016-08-22/2016-08-23"]
}
案例02:按小时计算
"granularitySpec" : {
"type" : "uniform",
"segmentGranularity" : "hour",
"queryGranularity" : "hour",
"intervals" : ["2016-08-22/2016-08-23"]
}
但是 "segmentGranularity" : "day" 的查询时间比 "segmentGranularity" : "hour" 慢。任何人都可以向我解释一下这个案例吗?为什么按天分段比按小时分段慢?在按天和按小时存储数据分段之间,如何选择分段类型?它如何影响我的查询?
非常感谢 !
您可以考虑这些因素来决定细分粒度:
- 在实时摄取的情况下,段粒度将决定实时索引任务的时间 run.The 段粒度越粗,这些实时索引任务 run.Realtime 任务将数据持久化的时间越长深度存储仅在它们完成时因此,如果一个时间间隔内实时任务的所有副本都被杀死,您将丢失该时间的数据 interval.Hence 段粒度会影响丢失数据的风险。
更细的段粒度将意味着更多的资源分配给中层管理人员,因为多个短任务将并行执行。
- 分段粒度也会影响正在创建的分段的大小。
在基本设置中,为每个时间间隔创建一个段文件,其中时间间隔可由 segmentGranularity 配置。
一般来说,建议将段大小保持在 300-700 MB 和最多 500 万 rows.Hence 此建议也可用于决定段 granularity.If 非常少和大的段正在产生,它将影响查询的并行度,因为并行度的单位是 segment.Hence 大段有时会减慢查询速度,这可能是您在天级别创建段时的情况。
我还建议您查看查询节点(即历史和实时)发出的各种德鲁伊指标,以找出查询速度较慢时的瓶颈。
有关各种指标,请参阅 http://druid.io/docs/latest/operations/metrics.html
我在 https://groups.google.com/forum/#!topic/druid-user/SYWcqcr504k 上问了我的问题 但是没有人帮助我解决这个问题。
我正在处理大型数据集。在 2 种情况下的 topN 查询(按天的 segmentGranularity 与按小时的 segmentGranularity)在 sam "queryGranularity" 上按 "hour".
案例 01:按天
"granularitySpec" : {
"type" : "uniform",
"segmentGranularity" : "day",
"queryGranularity" : "hour",
"intervals" : ["2016-08-22/2016-08-23"]
}
案例02:按小时计算
"granularitySpec" : {
"type" : "uniform",
"segmentGranularity" : "hour",
"queryGranularity" : "hour",
"intervals" : ["2016-08-22/2016-08-23"]
}
但是 "segmentGranularity" : "day" 的查询时间比 "segmentGranularity" : "hour" 慢。任何人都可以向我解释一下这个案例吗?为什么按天分段比按小时分段慢?在按天和按小时存储数据分段之间,如何选择分段类型?它如何影响我的查询? 非常感谢 !
您可以考虑这些因素来决定细分粒度:
- 在实时摄取的情况下,段粒度将决定实时索引任务的时间 run.The 段粒度越粗,这些实时索引任务 run.Realtime 任务将数据持久化的时间越长深度存储仅在它们完成时因此,如果一个时间间隔内实时任务的所有副本都被杀死,您将丢失该时间的数据 interval.Hence 段粒度会影响丢失数据的风险。 更细的段粒度将意味着更多的资源分配给中层管理人员,因为多个短任务将并行执行。
- 分段粒度也会影响正在创建的分段的大小。 在基本设置中,为每个时间间隔创建一个段文件,其中时间间隔可由 segmentGranularity 配置。 一般来说,建议将段大小保持在 300-700 MB 和最多 500 万 rows.Hence 此建议也可用于决定段 granularity.If 非常少和大的段正在产生,它将影响查询的并行度,因为并行度的单位是 segment.Hence 大段有时会减慢查询速度,这可能是您在天级别创建段时的情况。
我还建议您查看查询节点(即历史和实时)发出的各种德鲁伊指标,以找出查询速度较慢时的瓶颈。 有关各种指标,请参阅 http://druid.io/docs/latest/operations/metrics.html