io.druid.query.QueryToolChest.filterSegments()方法的使用及代码示例

x33g5p2x  于2022-01-29 转载在 其他  
字(1.8k)|赞(0)|评价(0)|浏览(80)

本文整理了Java中io.druid.query.QueryToolChest.filterSegments方法的一些代码示例,展示了QueryToolChest.filterSegments的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。QueryToolChest.filterSegments方法的具体详情如下:
包路径:io.druid.query.QueryToolChest
类名称:QueryToolChest
方法名:filterSegments

QueryToolChest.filterSegments介绍

[英]This method is called to allow the query to prune segments that it does not believe need to actually be queried. It can use whatever criteria it wants in order to do the pruning, it just needs to return the list of Segments it actually wants to see queried.
[中]调用此方法是为了允许查询修剪它认为不需要实际查询的段。它可以使用它想要的任何条件来进行修剪,它只需要返回它真正想要查看的片段列表。

代码示例

代码示例来源:origin: io.druid/druid-server

private Set<ServerToSegment> computeSegmentsToQuery(TimelineLookup<String, ServerSelector> timeline)
{
 final List<TimelineObjectHolder<String, ServerSelector>> serversLookup = toolChest.filterSegments(
   query,
   query.getIntervals().stream().flatMap(i -> timeline.lookup(i).stream()).collect(Collectors.toList())
 );
 final Set<ServerToSegment> segments = Sets.newLinkedHashSet();
 final Map<String, Optional<RangeSet<String>>> dimensionRangeCache = Maps.newHashMap();
 // Filter unneeded chunks based on partition dimension
 for (TimelineObjectHolder<String, ServerSelector> holder : serversLookup) {
  final Set<PartitionChunk<ServerSelector>> filteredChunks = DimFilterUtils.filterShards(
    query.getFilter(),
    holder.getObject(),
    partitionChunk -> partitionChunk.getObject().getSegment().getShardSpec(),
    dimensionRangeCache
  );
  for (PartitionChunk<ServerSelector> chunk : filteredChunks) {
   ServerSelector server = chunk.getObject();
   final SegmentDescriptor segment = new SegmentDescriptor(
     holder.getInterval(),
     holder.getVersion(),
     chunk.getChunkNumber()
   );
   segments.add(new ServerToSegment(server, segment));
  }
 }
 return segments;
}

代码示例来源:origin: com.n3twork.druid/druid-server

toolChest.filterSegments(query, serversLookup);

相关文章