调试
This documentation is for an unreleased version of Apache Flink. We recommend you use the latest stable version.

调试 #

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

打印日志信息 #

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

@udf(result_type=DataTypes.BIGINT())
def add(i, j):
    # 使用 logging 模块
    import logging
    logging.info("debug")
    # 使用 print 函数
    print('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代码