在使用Flink SQL过程中,SQL Client想必大家都是非常熟悉的,本文介绍基于IDEA的SQL Client远程调试方法。
前提:本文使用的Flink版本为1.14.4,其他版本调试方法也一样。
翻看sql-client.sh脚本,其实里面的内容就是执行SqlClient这个主类。
# check if SQL client is already in classpath and must not be shipped manually
if [[ "$CC_CLASSPATH" =~ .*flink-sql-client.*.jar ]]; then
# start client without jar
exec "$JAVA_RUN" $JVM_ARGS "${log_setting[@]}" -classpath "`manglePathList "$CC_CLASSPATH:$INTERNAL_HADOOP_CLASSPATHS"`" org.apache.flink.table.client.SqlClient "$@"
# check if SQL client jar is in /opt
elif [ -n "$FLINK_SQL_CLIENT_JAR" ]; then
# start client with jar
exec "$JAVA_RUN" $JVM_ARGS "${log_setting[@]}" -classpath "`manglePathList "$CC_CLASSPATH:$INTERNAL_HADOOP_CLASSPATHS:$FLINK_SQL_CLIENT_JAR"`" org.apache.flink.table.client.SqlClient "$@" --jar "`manglePath $FLINK_SQL_CLIENT_JAR`"
# write error message to stderr
else
(>&2 echo "[ERROR] Flink SQL Client JAR file 'flink-sql-client*.jar' neither found in classpath nor /opt directory should be located in $FLINK_OPT_DIR.")
# exit to force process failure
exit 1
fi
所以我们只需要在这个脚本里面加上调试参数,然后IDEA开启调试模式即可。具体步骤如下:
下载Flink二进制包与源码,将二进制包放到linux服务器执行,源码用IDEA打开。
linux服务器中启动单节点模式的flink standalone集群
bin/jobmanager start
bin/taskmanager start
以及在bin/sql-client.sh加上如下调试参数:
JVM_ARGS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
并启动sql-client
bin/sql-client.sh
可以看到监听5005端口
IDEA中配置如下:
开启debug并在CliClient.java的如下位置打断点
然后在sql-client中输入select 1,即可进入上述断点位置:
接下来便可以愉快调试了。
本文为从大数据到人工智能博主「xiaozhch5」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://lrting.top/backend/6845/