Flink SQL Client远程调试指南

2022-09-09 11:22:43 浏览数 (1)

在使用Flink SQL过程中,SQL Client想必大家都是非常熟悉的,本文介绍基于IDEA的SQL Client远程调试方法。

前提:本文使用的Flink版本为1.14.4,其他版本调试方法也一样。

翻看sql-client.sh脚本,其实里面的内容就是执行SqlClient这个主类。

代码语言:javascript复制
# 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
fiCOPY

所以我们只需要在这个脚本里面加上调试参数,然后IDEA开启调试模式即可。具体步骤如下:

下载Flink二进制包与源码,将二进制包放到linux服务器执行,源码用IDEA打开。

linux服务器中启动单节点模式的flink standalone集群

代码语言:javascript复制
bin/jobmanager start
bin/taskmanager startCOPY

以及在bin/sql-client.sh加上如下调试参数:

代码语言:javascript复制
JVM_ARGS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005COPY

并启动sql-client

代码语言:javascript复制
bin/sql-client.shCOPY

可以看到监听5005端口

IDEA中配置如下:

开启debug并在CliClient.java的如下位置打断点

然后在sql-client中输入select 1,即可进入上述断点位置:

接下来便可以愉快调试了。

本文为从大数据到人工智能博主「xiaozhch5」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://cloud.tencent.com/developer/article/2101186

0 人点赞