调试

本页介绍如何在PyFlink进行调试

打印日志信息

Python UDF可以通过标准的Python logging模块记录上下文和调试信息。

  1. @udf(input_types=[DataTypes.BIGINT(), DataTypes.BIGINT()], result_type=DataTypes.BIGINT())
  2. def add(i, j):
  3. import logging
  4. logging.info("debug")
  5. return i + j

查看日志

如果设置了环境变量FLINK_HOME,日志将会放置在FLINK_HOME指向目录的log目录之下。否则,日志将会放在安装的Pyflink模块的 log目录下。你可以通过执行下面的命令来查找PyFlink模块的log目录的路径:

  1. $ python -c "import pyflink;import os;print(os.path.dirname(os.path.abspath(pyflink.__file__))+'/log')"

调试Python UDFs

你可以利用PyCharm提供的pydevd_pycharm工具进行Python UDF的调试

  1. 在PyCharm里创建一个Python Remote Debug

    run -> Python Remote Debug -> + -> 选择一个port (e.g. 6789)

  2. 安装pydevd-pycharm工具

    1. $ pip install pydevd-pycharm
  3. 在你的Python UDF里面添加如下的代码

    1. import pydevd_pycharm
    2. pydevd_pycharm.settrace('localhost', port=6789, stdoutToServer=True, stderrToServer=True)
  4. 启动刚刚创建的Python Remote Dubug Server

  5. 运行你的Python代码