in spark-doris-connector/spark-doris-connector-base/src/main/java/org/apache/doris/spark/client/DorisFrontendClient.java [264:302]
private List<Frontend> parseFrontends(ArrayNode columnNames, ArrayNode rows) {
int hostIdx = -1;
int httpPortIdx = -1;
int queryPortIdx = -1;
int flightSqlIdx = -1;
for (int idx = 0; idx < columnNames.size(); idx++) {
String columnName = columnNames.get(idx).asText();
switch (columnName) {
case "Host":
case "HostName":
hostIdx = idx;
break;
case "HttpPort":
httpPortIdx = idx;
break;
case "QueryPort":
queryPortIdx = idx;
break;
case "ArrowFlightSqlPort":
flightSqlIdx = idx;
break;
default:
break;
}
}
if (rows.isEmpty()) {
return Collections.emptyList();
}
List<Frontend> frontends = new ArrayList<>();
for (int rowIdx = 0; rowIdx < rows.size(); rowIdx++) {
ArrayNode row = (ArrayNode) rows.get(rowIdx);
if (flightSqlIdx == -1) {
frontends.add(new Frontend(row.get(hostIdx).asText(), row.get(httpPortIdx).asInt(), row.get(queryPortIdx).asInt()));
} else {
frontends.add(new Frontend(row.get(hostIdx).asText(), row.get(httpPortIdx).asInt(), row.get(queryPortIdx).asInt(), row.get(flightSqlIdx).asInt()));
}
}
return frontends;
}