小程序毕设选题推荐:基于微信小程序的粤语文化传播平台的设计与开发基于Springboot+微信小程序的粤语文化传播平台的设计与开发【附源码、mysql、文档、调试+代码讲解+全bao等】
2026/6/9 14:21:17
适用:UDF 之外的代码,比如建表、拼 SQL、打印 schema、构建 pipeline 的过程。
frompyflink.tableimportEnvironmentSettings,TableEnvironmentimportlogging env_settings=EnvironmentSettings.in_streaming_mode()table_env=TableEnvironment.create(env_settings)table=table_env.from_elements([(1,'Hi'),(2,'Hello')])logging.warning(table.get_schema())print(table.get_schema())关键点:
logging.info(...)通常你看不到,想看就用warning/error或调整 logging 配置适用:Python UDF 内部,也就是你怀疑逻辑不对、数据不对、性能不对的时候。
frompyflink.tableimportDataTypesfrompyflink.table.udfimportudfimportlogging@udf(result_type=DataTypes.BIGINT())defadd(i,j):logging.info("debug info in TM log")print("debug print in TM log")returni+j关键点:
logging.info默认是能看到的(在 TaskManager 日志里)日志一般在:
$FLINK_HOME/log/日志会写到pyflink 模块目录下的 log 目录。官方给了一个一行命令直接定位:
python -c"import pyflink;import os;print(os.path.dirname(os.path.abspath(pyflink.__file__))+'/log')"你可以把它作为博客里的“找日志最快方法”。
适合:你跑的是本地 mini cluster / 或者你只是想先把 Python 函数本身逻辑跑通。
做法:直接在 PyCharm/IDEA 的 Python 环境里对函数断点、单步即可。
建议小技巧:
适合:UDF 真正在 TaskManager 上跑,你想“断点进去看运行时数据”。
步骤(你贴的内容我给你补成可跑的顺序):
+-> 选端口,比如6789pipinstallpydevd-pycharmimportpydevd_pycharm pydevd_pycharm.settrace('localhost',port=6789,stdoutToServer=True,stderrToServer=True)实战注意点(经验坑位):
localhost只有在“Python worker 能访问到你 PyCharm 所在机器”时才成立
分布式并行度 > 1 时,可能多个 subtask 同时尝试连 debug server
官方给的是一个开关:
t_env.get_config().set("python.profile.enabled","true")开启后,profiling 结果会周期性输出到 TaskManager 日志里。
实战建议:
python.fn-execution.bundle.size、python.fn-execution.bundle.time会影响“多久吐一次 profile”python.profile.enabled=true看热点函数,再回头调 bundle/arrow/chaining/execution-mode