Hi,

(1) 1.15没有在Python
DataStream上提供各种内置的Window的支持,需要自定义。在1.16我们补全了这部分的支持,window支持将得到完善。关于asnyc
io的支持暂时没有这方面的计划,一方面的考虑是pyflink现有的process
mode[1]的执行模式就是asnyc的模式了。join的支持需要在thread mode下才能够支持,后续会支持。

(2) 对于主体是pyflink,部分是java的情况,你可以考虑Py4j的方式试试。

(3) 对于主体是java,部分想用python的情况,其实有好些用户对这方面有这部分的需求,可以考虑使用java function +
pemja[2]的方式

Best,
Xingbo

[1]
https://nightlies.apache.org/flink/flink-docs-release-1.15/docs/dev/python/python_execution_mode/
[2] https://github.com/alibaba/pemja

yidan zhao <hinobl...@gmail.com> 于2022年7月27日周三 17:20写道:

> (1)
> 现在pyflink支持如何呀,我看了1.15.0的代码中,examples中没有window 的demo,看源码来看貌似没有直接可用的
> windowAssigner,都需要自定义?
> 看 master 貌似才有,这部分目前的可用性如何,感觉是不是还不够完善。
>
> 其次,目前看async io相关的也不支持。join也不支持对吗。
> 对于当前使用pyflink情况,部分不支持的,但是java部分支持的api,如何使用呢?
>
> (2)
> 其次,我想知道,是否存在反过来的用法。比如主体程序是java,但是部分算子用python实现,注意我说的都是 dataStream
> api,非batch。
> 比如基于python实现一个flatMap,针对每个元素跑模型预测。主体则使用java,有什么实现方法吗?
>
> yidan zhao <hinobl...@gmail.com> 于2022年7月13日周三 21:54写道:
> >
> > 谢谢回答。
> >
> > Xingbo Huang <hxbks...@gmail.com> 于2022年7月13日周三 16:55写道:
> > >
> > > Hi,
> > >
> > > 简单来说,如果你的作业逻辑中只使用了纯java的算子,比如你写的是一个没有使用 Python udf 的sql/table api
> > > 作业时,那么运行时就不需要对Python有需求,但是如果你使用了python udf,或者是你用的是python datastream
> > > api来编写你的作业,那么运行时就对python环境有要求,毕竟那些python的自定义函数逻辑是需要Python解释器来执行的。
> > >
> > > pyflink的runtime有两种执行模式process和thread。process模式是基于apache beam
> > >
> portability框架做的进程间通信的方式,让python自定义函数运行在专门的Python进程的方式。关于thread模式则是基于pemja[1]做的嵌入的方式,让python直接嵌入到jvm里面运行,这种方式是1.15引入的,关于这部分内容可以参考文档[2]
> > >
> > >
> 关于性能问题的话,首先,如果你没有用python自定义函数,性能和java一模一样,因为你本质上只是用了pyflink的api。如果你用了python自定义函数,那就取决于你的性能瓶颈在哪了,因为我们知道python函数的性能是不如Java函数的。关于框架层的开销,我之前有写了专门的文章[3]分析过。
> > >
> > > 希望对你有所帮助。
> > >
> > > Best,
> > > Xingbo
> > >
> > > [1] https://github.com/alibaba/pemja
> > > [2]
> > >
> https://nightlies.apache.org/flink/flink-docs-release-1.15/docs/dev/python/python_execution_mode/
> > > [3] https://flink.apache.org/2022/05/06/pyflink-1.15-thread-mode.html
> > >
> > > yidan zhao <hinobl...@gmail.com> 于2022年7月13日周三 15:47写道:
> > >
> > > > 目前看了下pyflink,想了解下,pyflink的任务实际运行时也是JAVA+python双环境吗。
> > > > 涉及java和python交互等是吗。性能相比java直接开发的任务会有区别吗?
> > > >
> > > > yidan zhao <hinobl...@gmail.com> 于2022年7月12日周二 19:27写道:
> > > > >
> > > > > 公司有部分项目是基于 storm 开发的,目前想进行改造,计划用 flink。
> > > > >
> > > > > 初步看了下代码,发现 storm 中实现都是通过 multi-lang 方式各种调用 shell、python
> > > > > 实现。这些shell和python主要通过storm提供的一个 storm.py 基础包实现和 父进程
> > > > > 的通信(基于stdin和stdout貌似)。
> > > > >
> > > > > 想问问,这种如何改造呢?
> > > > >
> 首先是大方向上,(1)连同python、shell部分一起改造。(2)保留python、shell部分,基于flink实现一套类似机制。
> > > > >
> > > > > (1)和(2)目前看起来都会很复杂。
> > > > >
> > > > > 有没有小伙伴做过类似事情呢?
> > > >
>

回复