Flink SQL Client远程调试指南

肖钟城
  • 大数据技术栈
  • Flink
大约 1 分钟

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端口

IDEA中配置如下:

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

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

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

评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.14.1