看你错误日志运行的示例使用了PyUDFDemoConnector,也就是参考的博客[1],
在写这个博客时候1.10还没有发布,在发布之后接口有变化,所以PyUDFDemoConnector有个问题,我前两天进行了更新。你可以更新一下JAR。 另外你发的问题很久之前,发布1.10之前已经fix了[2],所以你更新一下connector在测试一下看看。有问题继续沟通。 Best, Jincheng [1] https://enjoyment.cool/2019/12/05/Apache-Flink-%E8%AF%B4%E9%81%93%E7%B3%BB%E5%88%97-%E5%A6%82%E4%BD%95%E5%9C%A8PyFlink-1-10%E4%B8%AD%E8%87%AA%E5%AE%9A%E4%B9%89Python-UDF/ [2] https://issues.apache.org/jira/browse/FLINK-14581 zilong xiao <[hidden email]> 于2020年3月25日周三 下午12:19写道: > 是的,有一个关键步骤:`source > py36/bin/activate`是在文档中未体现的,执行该步骤后提交到yarn集群可以正常工作,然后最近在进一步研究1.10对于udf的支持,在尝试提交udf作业时,会出现如下异常: > > Caused by: java.io.IOException: Cannot run program > "xxx/pyflink-udf-runner.sh": error=2, No such file or directory > > 提交作业前的操作如下: > 1.pip install virtualenv > 2.virtualenv --always-copy venv > 3.venv/bin/pip install apache-beam==2.15.0 > 4.venv/bin/pip install apache-flink > 5.venv/bin/pip install pydemo.tar.gz > 6.zip -r venv.zip venv > 7.bin/flink run -pyarch venv.zip -pyexec venv.zip/venv/bin/python -py > ./word_count_socket.py -j pydemo.jar > > 不知道前辈是否有遇到过类似情况呢? > > 完整异常栈信息 & 作业见附件 > > jincheng sun <[hidden email]> 于2020年3月19日周四 下午12:08写道: > >> 开心看到你在使用PyFlink 1.10,您遇到的问题,核心问题和将解决方式如下: >> >> 1. >> 利用shell的alias功能更改python命令指向是无效的,因为flink不通过shell启动Python进程。所以对flink来说本地python环境依然是python2. >> 2. 可以通过virtualenv, conda等工具创建python3.5+的环境,并激活,在激活了的环境下提交python job。 比如: >> pip install virtualenv >> virtualenv --python /usr/local/bin/python3 py36 >> source py36/bin/activate >> flink run -py pyflink.py >> 3. 另外也可以修改python命令的软链接,令其指向python3.5+。 >> >> 你可以尝试一下,有问题随时邮件交流! >> >> Best, >> 孙金城(金竹) >> >> >> >> zilong xiao <[hidden email]> 于2020年3月18日周三 下午12:14写道: >> >>> hi,金竹前辈您好,我是一名从事实时计算方向的IT工作者,最近在使用flink1.10 & >>> pyflink时遇到一点问题,希望能加下您的钉钉或者其他联系方式和您进一步交流,问题大概描述如下: >>> >>> 任务提交环境: >>> Apache-beam:2.15.0 >>> 本地python:2.7(已配置python3.7,通过修改~/.zshrc,alias >>> python='/usr/local/bin/python3.7') >>> pip:20.0.2 >>> flink:1.10 >>> >>> 提交命令:bin/flink run -pyarch tmp/venv.zip -pyexec >>> tmp/venv.zip/venv/bin/python3 -py word_count.py >>> >>> 在本地尝试以pre-job模式部署作业时,发现会提示如下报错,导致任务提交失败 >>> >>> RuntimeError: Python versions prior to 3.5 are not supported for PyFlink >>> [sys.version_info(major=2, minor=7, micro=16, releaselevel='final', >>> serial=0)]. >>> >>> >>> 显而易见,正如flink官方文档所说flink1.10作业必须要求python3.5+,我通过-pyarch >>> -pyexec来指定任务执行环境以及解释器环境,发现这两个指令貌似没生效,或者说没有作用,还是会有如上异常,具体执行过程都是参考您的文档: >>> https://enjoyment.cool/2020/01/02/Apache-Flink-%E8%AF%B4%E9%81%93%E7%B3%BB%E5%88%97-PyFlink-%E4%BD%9C%E4%B8%9A%E7%9A%84%E5%A4%9A%E7%A7%8D%E9%83%A8%E7%BD%B2%E6%A8%A1%E5%BC%8F/#more >>> 来操作的,我在想可能还是我的打开方式不对,亦或该指令还存在隐藏问题?可是网上也没有太多的资料,所以希望能和前辈您交流交流,帮我解开这个疑惑,期待前辈您的回复。 >>> >> |
Free forum by Nabble | Edit this page |