Flink SQL Client远程调试指南

在使用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端口

Flink SQL Client远程调试指南

IDEA中配置如下:

Flink SQL Client远程调试指南

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

Flink SQL Client远程调试指南

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

Flink SQL Client远程调试指南

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

0 0 投票数
文章评分

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

原文链接:https://lrting.top/backend/6845/

(0)
上一篇 2022-06-23 16:05
下一篇 2022-06-24 11:42

相关推荐

订阅评论
提醒
guest
0 评论
内联反馈
查看所有评论
0
希望看到您的想法,请您发表评论x