为了更快的定位您的问题,请提供以下信息,谢谢
【详述】官网的 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();
}
}
- 在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!