package com.alibaba.doris.demo; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Set; import com.alibaba.doris.client.DataSourceException; import com.alibaba.doris.client.DataStoreFactory; import com.alibaba.doris.client.DataStoreFactoryImpl; import com.alibaba.doris.common.Namespace; import com.alibaba.doris.common.StoreNode; import com.alibaba.doris.common.operation.OperationEnum; import com.alibaba.doris.common.route.DorisRouterException; import com.alibaba.doris.common.route.RouteTable; public class KeyMaker { static String configUrl = "doris-client.properties"; static DataStoreFactory dataStoreFactory = new DataStoreFactoryImpl( configUrl); public static List<String> makeKey(int number, int sequenceNum, String physicalId, String prefix) { int keyNum = 0, increaseNum = 0;// 满足条件的key个数,自增的数字 List<String> keysList = new ArrayList<String>();// 满足条件的key列表 String key = ""; List<StoreNode> storeNodeList = new ArrayList<StoreNode>(); while (keyNum < number) { key = prefix + increaseNum; try { storeNodeList = dataStoreFactory.getDataSourceManager() .getDataSourceRouter().getRouteStrategy() .findNodes(OperationEnum.READ, sequenceNum, key); for (StoreNode sn : storeNodeList) { if (physicalId.equals(sn.getPhId())) { keyNum++; keysList.add(key); } } } catch (DorisRouterException e) { e.printStackTrace(); break; } increaseNum++; } return keysList; } public static void main(String[] args) throws DataSourceException { /* Map<String, Namespace> map = dataStoreFactory.getNamespaceManager() .getNamespaces(); Set<String> set = map.keySet(); for (String namespaceKey : set) { System.out.println(namespaceKey); System.out.println(map.get(namespaceKey)); }*/ RouteTable routeTable = dataStoreFactory.getDataSourceManager() .getDataSourceRouter().getRouteTableConfiger().getRouteTable(); List<StoreNode> noList = routeTable.getNodeList(); String firstphId = ""; for (StoreNode storeNode : noList) { firstphId = storeNode.getPhId(); System.out.println("phId:" + storeNode.getPhId()); System.out.println("LogicId:" + storeNode.getLogicId()); System.out.println("Sequence:" + storeNode.getSequence()); } System.out.println("FirstPhId:" + firstphId); List<String> a = KeyMaker.makeKey(10, 2, firstphId, "a"); for (String key : a) { System.out.println(key); } } }