From 4c171bc97b21367ac86194ce5203d2b54e0d2f3b Mon Sep 17 00:00:00 2001 From: v-kkhuang <420895376@qq.com> Date: Mon, 1 Jun 2026 11:48:07 +0800 Subject: [PATCH] =?UTF-8?q?#AI=20commit#=20refactor:=E4=BF=AE=E5=A4=8Ddata?= =?UTF-8?q?source=20oom=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../metadata/service/impl/MdqServiceImpl.java | 54 +++++++++---------- 1 file changed, 26 insertions(+), 28 deletions(-) diff --git a/linkis-public-enhancements/linkis-datasource/linkis-metadata/src/main/java/org/apache/linkis/metadata/service/impl/MdqServiceImpl.java b/linkis-public-enhancements/linkis-datasource/linkis-metadata/src/main/java/org/apache/linkis/metadata/service/impl/MdqServiceImpl.java index 2575ff6a376..ebeb8602e29 100644 --- a/linkis-public-enhancements/linkis-datasource/linkis-metadata/src/main/java/org/apache/linkis/metadata/service/impl/MdqServiceImpl.java +++ b/linkis-public-enhancements/linkis-datasource/linkis-metadata/src/main/java/org/apache/linkis/metadata/service/impl/MdqServiceImpl.java @@ -318,39 +318,37 @@ public MdqTablePartitionStatisticInfoVO getPartitionStatisticInfo( public List getMdqTablePartitionStatisticInfoVO( List partitions, String partitionPath, String partitionSort) { // part_name(year=2020/day=0605) => MdqTablePartitionStatisticInfoVO 这里只是返回name,没有相关的分区统计数据 - ArrayList statisticInfoVOS = new ArrayList<>(); + List statisticInfoVOS = new ArrayList<>(); Map>> partitionsStr = partitions.stream() .map(this::splitStrByFirstSlanting) .filter(Objects::nonNull) // 去掉null的 .collect(Collectors.groupingBy(Tunple::getKey)); - partitionsStr.forEach( - (k, v) -> { - MdqTablePartitionStatisticInfoVO mdqTablePartitionStatisticInfoVO = - new MdqTablePartitionStatisticInfoVO(); - mdqTablePartitionStatisticInfoVO.setName(k); - String subPartitionPath = String.format("%s/%s", partitionPath, k); - mdqTablePartitionStatisticInfoVO.setPartitionPath(subPartitionPath); - List subPartitions = - v.stream().map(Tunple::getValue).collect(Collectors.toList()); - List childrens = - getMdqTablePartitionStatisticInfoVO(subPartitions, subPartitionPath, partitionSort); - // 排序 - if ("asc".equals(partitionSort)) { - childrens = - childrens.stream() - .sorted(Comparator.comparing(MdqTablePartitionStatisticInfoVO::getName)) - .collect(Collectors.toList()); - } else { - childrens = - childrens.stream() - .sorted( - Comparator.comparing(MdqTablePartitionStatisticInfoVO::getName).reversed()) - .collect(Collectors.toList()); - } - mdqTablePartitionStatisticInfoVO.setChildrens(childrens); - statisticInfoVOS.add(mdqTablePartitionStatisticInfoVO); - }); + Comparator comparator = + "asc".equals(partitionSort) + ? Comparator.comparing(MdqTablePartitionStatisticInfoVO::getName) + : Comparator.comparing(MdqTablePartitionStatisticInfoVO::getName).reversed(); + for (Map.Entry>> entry : partitionsStr.entrySet()) { + MdqTablePartitionStatisticInfoVO mdqTablePartitionStatisticInfoVO = + new MdqTablePartitionStatisticInfoVO(); + mdqTablePartitionStatisticInfoVO.setName(entry.getKey()); + String subPartitionPath = String.format("%s/%s", partitionPath, entry.getKey()); + mdqTablePartitionStatisticInfoVO.setPartitionPath(subPartitionPath); + List subPartitions = + entry.getValue().stream() + .map(Tunple::getValue) + .filter(Objects::nonNull) + .collect(Collectors.toList()); + if (subPartitions.isEmpty()) { + mdqTablePartitionStatisticInfoVO.setChildrens(new ArrayList<>()); + } else { + List childrens = + getMdqTablePartitionStatisticInfoVO(subPartitions, subPartitionPath, partitionSort); + childrens.sort(comparator); + mdqTablePartitionStatisticInfoVO.setChildrens(childrens); + } + statisticInfoVOS.add(mdqTablePartitionStatisticInfoVO); + } return statisticInfoVOS; }