本文档是 Apache Flink 的旧版本。建议访问 最新的稳定版本

调试

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

打印日志信息

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

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

查看日志

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

$ 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工具

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

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

  5. 运行你的Python代码