Arrow Flight SQL JDBC 驱动 官网例子运行不成功

为了更快的定位您的问题,请提供以下信息,谢谢
【详述】官网的 Arrow Flight SQL JDBC 驱动上的例子运行不成功
【背景】看附件
【业务影响】
【是否存算分离】
【StarRocks版本】4.0
【集群规模】docker环境
【机器信息】
【联系方式】rootwang@163.com
【附件】
参照官网

Steps to reproduce the behavior (Required)

1.docker启动starrocks
docker run -p 9030:9030 -p 8030:8030 -p 8040:8040 -p 9408:9408 -itd --name quickstart starrocks/allin1-ubuntu
2. 在容器中fe.conf添加配置JAVA_OPTS="–add-opens=java.base/java.nio=org.apache.arrow.memory.core,ALL-UNNAMED …"
3. maven也是按照官网添加的
4.按照官网的例子运行

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class ArrowFlightSqlIntegrationTest {

private static final String JDBC_URL = "jdbc:arrow-flight-sql://127.0.0.1:9408"
        + "?useEncryption=false"
        + "&useServerPrepStmts=false"
        + "&useSSL=false"
        + "&useArrowFlightSql=true";

private static final String USER = "root";
private static final String PASSWORD = "";

private static int testCaseNum = 1;

public static void main(String[] args) {
    try {
        // 加载 Arrow Flight SQL JDBC 驱动
        Class.forName("org.apache.arrow.driver.jdbc.ArrowFlightJdbcDriver");

        try (Connection conn = DriverManager.getConnection(JDBC_URL, USER, PASSWORD);
             Statement stmt = conn.createStatement()) {

// testUpdate(stmt, "DROP DATABASE IF EXISTS sr_arrow_flight_sql FORCE;");
// testQuery(stmt, "SHOW PROCESSLIST;");
// testUpdate(stmt, "CREATE DATABASE sr_arrow_flight_sql;");
// testQuery(stmt, "SHOW DATABASES;");
// testUpdate(stmt, "USE sr_arrow_flight_sql;");
// testUpdate(stmt, "CREATE TABLE sr_table_test (id INT, name STRING) ENGINE=OLAP PRIMARY KEY (id) " +
// "DISTRIBUTED BY HASH(id) BUCKETS 1 " +
// "PROPERTIES ('replication_num' = '1');");
// testUpdate(stmt, "INSERT INTO sr_table_test VALUES (1, 'Alice'), (2, 'Bob');");
testQuery(stmt, "SELECT * FROM sl.tbl_ship_route limit 5;");
}
} catch (Exception e) {
e.printStackTrace();
}
}

/**
 * 执行查询并将结果打印到控制台。
 */
private static void testQuery(Statement stmt, String sql) throws Exception {
    System.out.println("Test Case: " + testCaseNum);
    System.out.println("▶ Executing query: " + sql);
    ResultSet rs = stmt.executeQuery(sql);
    try {
        System.out.println("Result:");
        int columnCount = rs.getMetaData().getColumnCount();
        while (rs.next()) {
            for (int i = 1; i <= columnCount; i++) {
                System.out.print(rs.getString(i) + "\t");
            }
            System.out.println();
        }
    } finally {
        rs.close();
    }
    testCaseNum++;
    System.out.println();
}

/**
 * 执行更新(DDL 或 DML)并将结果打印到控制台。
 */
private static void testUpdate(Statement stmt, String sql) throws Exception {
    System.out.println("Test Case: " + testCaseNum);
    System.out.println("▶ Executing update: " + sql);
    stmt.executeUpdate(sql);
    System.out.println("Result: ✅ Success");
    testCaseNum++;
    System.out.println();
}
}
  1. 在ideal上运行结果报错
    11:54:42.761 [grpc-nio-worker-ELG-1-2] DEBUG io.grpc.netty.NettyClientHandler - [id: 0x04364251, L:/127.0.0.1:51096 - R:/127.0.0.1:9408] OUTBOUND SETTINGS: ack=false settings={ENABLE_PUSH=0, MAX_CONCURRENT_STREAMS=0, INITIAL_WINDOW_SIZE=1048576, MAX_HEADER_LIST_SIZE=2147483647}
    11:54:42.766 [grpc-nio-worker-ELG-1-2] DEBUG io.grpc.netty.NettyClientHandler - [id: 0x04364251, L:/127.0.0.1:51096 - R:/127.0.0.1:9408] OUTBOUND WINDOW_UPDATE: streamId=0 windowSizeIncrement=983041
    11:54:42.878 [main] ERROR org.apache.arrow.flight.auth2.ClientHandshakeWrapper - Failed on completing future
    org.apache.arrow.flight.FlightRuntimeException: Network closed for unknown reason
    at org.apache.arrow.flight.CallStatus.toRuntimeException(CallStatus.java:121)
    at org.apache.arrow.flight.grpc.StatusUtils.fromGrpcRuntimeException(StatusUtils.java:161)
    at org.apache.arrow.flight.grpc.StatusUtils.fromThrowable(StatusUtils.java:182)
    at org.apache.arrow.flight.auth2.ClientHandshakeWrapper.doClientHandshake(ClientHandshakeWrapper.java:55)
    at org.apache.arrow.flight.FlightClient.handshake(FlightClient.java:212)
    at org.apache.arrow.driver.jdbc.client.utils.ClientAuthenticationUtils.getAuthenticate(ClientAuthenticationUtils.java:107)
    at org.apache.arrow.driver.jdbc.client.utils.ClientAuthenticationUtils.getAuthenticate(ClientAuthenticationUtils.java:92)
    at org.apache.arrow.driver.jdbc.client.ArrowFlightSqlClientHandler$Builder.build(ArrowFlightSqlClientHandler.java:897)
    at org.apache.arrow.driver.jdbc.ArrowFlightConnection.createNewClientHandler(ArrowFlightConnection.java:116)
    at org.apache.arrow.driver.jdbc.ArrowFlightConnection.createNewConnection(ArrowFlightConnection.java:88)
    at org.apache.arrow.driver.jdbc.ArrowFlightJdbcDriver.connect(ArrowFlightJdbcDriver.java:90)
    at org.apache.arrow.driver.jdbc.ArrowFlightJdbcDriver.connect(ArrowFlightJdbcDriver.java:46)
    at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:681)
    at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:229)
    at ArrowFlightSqlIntegrationTest.main(ArrowFlightSqlIntegrationTest.java:32)
    11:54:42.879 [main] ERROR org.apache.arrow.flight.auth2.ClientHandshakeWrapper - Failed with unknown
    org.apache.arrow.flight.FlightRuntimeException: Network closed for unknown reason
    at org.apache.arrow.flight.CallStatus.toRuntimeException(CallStatus.java:121)
    at org.apache.arrow.flight.grpc.StatusUtils.fromGrpcRuntimeException(StatusUtils.java:161)
    at org.apache.arrow.flight.grpc.StatusUtils.fromThrowable(StatusUtils.java:182)
    at org.apache.arrow.flight.auth2.ClientHandshakeWrapper.doClientHandshake(ClientHandshakeWrapper.java:55)
    at org.apache.arrow.flight.FlightClient.handshake(FlightClient.java:212)
    at org.apache.arrow.driver.jdbc.client.utils.ClientAuthenticationUtils.getAuthenticate(ClientAuthenticationUtils.java:107)
    at org.apache.arrow.driver.jdbc.client.utils.ClientAuthenticationUtils.getAuthenticate(ClientAuthenticationUtils.java:92)
    at org.apache.arrow.driver.jdbc.client.ArrowFlightSqlClientHandler$Builder.build(ArrowFlightSqlClientHandler.java:897)
    at org.apache.arrow.driver.jdbc.ArrowFlightConnection.createNewClientHandler(ArrowFlightConnection.java:116)
    at org.apache.arrow.driver.jdbc.ArrowFlightConnection.createNewConnection(ArrowFlightConnection.java:88)
    at org.apache.arrow.driver.jdbc.ArrowFlightJdbcDriver.connect(ArrowFlightJdbcDriver.java:90)
    at org.apache.arrow.driver.jdbc.ArrowFlightJdbcDriver.connect(ArrowFlightJdbcDriver.java:46)
    at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:681)
    at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:229)
    at ArrowFlightSqlIntegrationTest.main(ArrowFlightSqlIntegrationTest.java:32)
    java.sql.SQLException: org.apache.arrow.flight.FlightRuntimeException: UNAVAILABLE: Network closed for unknown reason
    at org.apache.arrow.driver.jdbc.client.ArrowFlightSqlClientHandler$Builder.build(ArrowFlightSqlClientHandler.java:914)
    at org.apache.arrow.driver.jdbc.ArrowFlightConnection.createNewClientHandler(ArrowFlightConnection.java:116)
    at org.apache.arrow.driver.jdbc.ArrowFlightConnection.createNewConnection(ArrowFlightConnection.java:88)
    at org.apache.arrow.driver.jdbc.ArrowFlightJdbcDriver.connect(ArrowFlightJdbcDriver.java:90)
    at org.apache.arrow.driver.jdbc.ArrowFlightJdbcDriver.connect(ArrowFlightJdbcDriver.java:46)
    at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:681)
    at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:229)
    at ArrowFlightSqlIntegrationTest.main(ArrowFlightSqlIntegrationTest.java:32)
    Caused by: org.apache.arrow.flight.FlightRuntimeException: UNAVAILABLE: Network closed for unknown reason
    at org.apache.arrow.flight.CallStatus.toRuntimeException(CallStatus.java:121)
    at org.apache.arrow.flight.grpc.StatusUtils.fromGrpcRuntimeException(StatusUtils.java:161)
    at org.apache.arrow.flight.grpc.StatusUtils.fromThrowable(StatusUtils.java:182)
    at org.apache.arrow.flight.auth2.ClientHandshakeWrapper.doClientHandshake(ClientHandshakeWrapper.java:55)
    at org.apache.arrow.flight.FlightClient.handshake(FlightClient.java:212)
    at org.apache.arrow.driver.jdbc.client.utils.ClientAuthenticationUtils.getAuthenticate(ClientAuthenticationUtils.java:107)
    at org.apache.arrow.driver.jdbc.client.utils.ClientAuthenticationUtils.getAuthenticate(ClientAuthenticationUtils.java:92)
    at org.apache.arrow.driver.jdbc.client.ArrowFlightSqlClientHandler$Builder.build(ArrowFlightSqlClientHandler.java:897)
    … 7 more

本地的docker是正常运行的
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
762f5c26b98a starrocks/allin1-ubuntu “/usr/bin/tini-stati…” 2 hours ago Up 10 minutes (healthy) 0.0.0.0:8030->8030/tcp, 0.0.0.0:8040->8040/tcp, 0.0.0.0:9030->9030/tcp, 0.0.0.0:9408->9408/tcp quickstart

宿主机到9408端口是通的
nc -vz 127.0.0.1 9408
Connection to 127.0.0.1 port 9408 [tcp/*] succeeded!

问题解决了,是因为arrow_flight_port = 9408和arrow_flight_port = 9419没有设置