基于flink1.12.0版本的pyflink开发了一个程序,使用了udaf,想在本地的PyCharm环境调试该功能,在udaf的第一行打了断点,但是没法进入。
可以确认程序有正确运行,因为sink到kafka里看了是有数据的。 请问是否需要什么配置才能进行调试。 [hidden email] |
Hi,
想要调试可以使用的方式为 1. 在PyCharm里创建一个Python Remote Debug run -> Python Remote Debug -> + -> 选择一个端口(比如6789) 2. 安装pydevd-pycharm(你PyCharm使用的python解释器) pip install pydevd-pycharm 其实上一步那个界面也有指导你安装了 3. 将以下代码插入到你要断点的udaf的代码前面(这段代码其实也是来自第一步创建remote debug里面) import pydevd_pycharm pydevd_pycharm.settrace('localhost', port=6789, stdoutToServer=True, stderrToServer=True) 例如 @udaf(result_type=DataTypes.INT(), func_type="pandas") def mean_udaf(v): import pydevd_pycharm pydevd_pycharm.settrace('localhost', port=6789, stdoutToServer=True, stderrToServer=True) v.mean() 4. 在你的PyCharm里面点击Debug启动你刚刚创建的Remote Debug Server 5. 直接点击Run运行你的作业,这个时候会断点在你的udaf的代码里面了 Best, Xingbo [hidden email] <[hidden email]> 于2020年12月15日周二 上午9:25写道: > > 基于flink1.12.0版本的pyflink开发了一个程序,使用了udaf,想在本地的PyCharm环境调试该功能,在udaf的第一行打了断点,但是没法进入。 > 可以确认程序有正确运行,因为sink到kafka里看了是有数据的。 > 请问是否需要什么配置才能进行调试。 > > > > [hidden email] > |
Hi Xingbo,
多谢指导,亲测有效。 源python文件运行一会儿本身就结束运行了,过阵子后才会跳到断点里。 所以源python文件只是做了个提交的动作,实际执行都是异步执行,是否可以这么理解? 如果是的话,之前已经运行过很多次源python文件,是否本地已经在后台异步运行了多次?是的话是否能监控到这些任务? [hidden email] 发件人: Xingbo Huang 发送时间: 2020-12-15 09:59 收件人: user-zh 主题: Re: pyflink是否可调试 Hi, 想要调试可以使用的方式为 1. 在PyCharm里创建一个Python Remote Debug run -> Python Remote Debug -> + -> 选择一个端口(比如6789) 2. 安装pydevd-pycharm(你PyCharm使用的python解释器) pip install pydevd-pycharm 其实上一步那个界面也有指导你安装了 3. 将以下代码插入到你要断点的udaf的代码前面(这段代码其实也是来自第一步创建remote debug里面) import pydevd_pycharm pydevd_pycharm.settrace('localhost', port=6789, stdoutToServer=True, stderrToServer=True) 例如 @udaf(result_type=DataTypes.INT(), func_type="pandas") def mean_udaf(v): import pydevd_pycharm pydevd_pycharm.settrace('localhost', port=6789, stdoutToServer=True, stderrToServer=True) v.mean() 4. 在你的PyCharm里面点击Debug启动你刚刚创建的Remote Debug Server 5. 直接点击Run运行你的作业,这个时候会断点在你的udaf的代码里面了 Best, Xingbo [hidden email] <[hidden email]> 于2020年12月15日周二 上午9:25写道: > > 基于flink1.12.0版本的pyflink开发了一个程序,使用了udaf,想在本地的PyCharm环境调试该功能,在udaf的第一行打了断点,但是没法进入。 > 可以确认程序有正确运行,因为sink到kafka里看了是有数据的。 > 请问是否需要什么配置才能进行调试。 > > > > [hidden email] > |
In reply to this post by Xingbo Huang
Hi,
客户端写的python代码会在一个客户端的进程通过py4j调用flink java的代码去编译你的作业(这里有一个客户端的Python进程,只是用来编译代码生成pipeline), 然后实际运行时,非python代码部分(就是非各种udf的逻辑是运行在JVM里面的),python部分(各种udf)是运行在另一个Python进程里面的。 实际上,在下一个1.13版本我们有考虑在你本地运行调试的时候,将实际运行python代码的重连回客户端那个编译Python代码的进程,这样可以更利于你的本地调试,就不用开启remote debug了。 Best, Xingbo [hidden email] <[hidden email]> 于2020年12月15日周二 上午10:29写道: > Hi Xingbo, > > 多谢指导,亲测有效。 > 源python文件运行一会儿本身就结束运行了,过阵子后才会跳到断点里。 > 所以源python文件只是做了个提交的动作,实际执行都是异步执行,是否可以这么理解? > 如果是的话,之前已经运行过很多次源python文件,是否本地已经在后台异步运行了多次?是的话是否能监控到这些任务? > > > > [hidden email] > > 发件人: Xingbo Huang > 发送时间: 2020-12-15 09:59 > 收件人: user-zh > 主题: Re: pyflink是否可调试 > Hi, > 想要调试可以使用的方式为 > 1. 在PyCharm里创建一个Python Remote Debug > run -> Python Remote Debug -> + -> 选择一个端口(比如6789) > > 2. 安装pydevd-pycharm(你PyCharm使用的python解释器) > pip install pydevd-pycharm > 其实上一步那个界面也有指导你安装了 > > 3. 将以下代码插入到你要断点的udaf的代码前面(这段代码其实也是来自第一步创建remote debug里面) > import pydevd_pycharm > pydevd_pycharm.settrace('localhost', port=6789, stdoutToServer=True, > stderrToServer=True) > > 例如 > @udaf(result_type=DataTypes.INT(), func_type="pandas") > def mean_udaf(v): > import pydevd_pycharm > pydevd_pycharm.settrace('localhost', port=6789, stdoutToServer=True, > stderrToServer=True) > v.mean() > > 4. 在你的PyCharm里面点击Debug启动你刚刚创建的Remote Debug Server > > 5. 直接点击Run运行你的作业,这个时候会断点在你的udaf的代码里面了 > > Best, > Xingbo > > [hidden email] <[hidden email]> 于2020年12月15日周二 上午9:25写道: > > > > > > 基于flink1.12.0版本的pyflink开发了一个程序,使用了udaf,想在本地的PyCharm环境调试该功能,在udaf的第一行打了断点,但是没法进入。 > > 可以确认程序有正确运行,因为sink到kafka里看了是有数据的。 > > 请问是否需要什么配置才能进行调试。 > > > > > > > > [hidden email] > > > |
1.13版本pyflink很多优化项啊,期待下个版本
[hidden email] 发件人: Xingbo Huang 发送时间: 2020-12-15 10:37 收件人: user-zh 主题: Re: Re: pyflink是否可调试 Hi, 客户端写的python代码会在一个客户端的进程通过py4j调用flink java的代码去编译你的作业(这里有一个客户端的Python进程,只是用来编译代码生成pipeline), 然后实际运行时,非python代码部分(就是非各种udf的逻辑是运行在JVM里面的),python部分(各种udf)是运行在另一个Python进程里面的。 实际上,在下一个1.13版本我们有考虑在你本地运行调试的时候,将实际运行python代码的重连回客户端那个编译Python代码的进程,这样可以更利于你的本地调试,就不用开启remote debug了。 Best, Xingbo [hidden email] <[hidden email]> 于2020年12月15日周二 上午10:29写道: > Hi Xingbo, > > 多谢指导,亲测有效。 > 源python文件运行一会儿本身就结束运行了,过阵子后才会跳到断点里。 > 所以源python文件只是做了个提交的动作,实际执行都是异步执行,是否可以这么理解? > 如果是的话,之前已经运行过很多次源python文件,是否本地已经在后台异步运行了多次?是的话是否能监控到这些任务? > > > > [hidden email] > > 发件人: Xingbo Huang > 发送时间: 2020-12-15 09:59 > 收件人: user-zh > 主题: Re: pyflink是否可调试 > Hi, > 想要调试可以使用的方式为 > 1. 在PyCharm里创建一个Python Remote Debug > run -> Python Remote Debug -> + -> 选择一个端口(比如6789) > > 2. 安装pydevd-pycharm(你PyCharm使用的python解释器) > pip install pydevd-pycharm > 其实上一步那个界面也有指导你安装了 > > 3. 将以下代码插入到你要断点的udaf的代码前面(这段代码其实也是来自第一步创建remote debug里面) > import pydevd_pycharm > pydevd_pycharm.settrace('localhost', port=6789, stdoutToServer=True, > stderrToServer=True) > > 例如 > @udaf(result_type=DataTypes.INT(), func_type="pandas") > def mean_udaf(v): > import pydevd_pycharm > pydevd_pycharm.settrace('localhost', port=6789, stdoutToServer=True, > stderrToServer=True) > v.mean() > > 4. 在你的PyCharm里面点击Debug启动你刚刚创建的Remote Debug Server > > 5. 直接点击Run运行你的作业,这个时候会断点在你的udaf的代码里面了 > > Best, > Xingbo > > [hidden email] <[hidden email]> 于2020年12月15日周二 上午9:25写道: > > > > > > 基于flink1.12.0版本的pyflink开发了一个程序,使用了udaf,想在本地的PyCharm环境调试该功能,在udaf的第一行打了断点,但是没法进入。 > > 可以确认程序有正确运行,因为sink到kafka里看了是有数据的。 > > 请问是否需要什么配置才能进行调试。 > > > > > > > > [hidden email] > > > |
Free forum by Nabble | Edit this page |