pyflow
产品支持情况
函数功能
支持将函数作为pipeline任务在本地或者远端运行。为此,需使用@pyflow装饰函数,以表达需要使用pipeline方式运行此函数。当用户的类或者函数被@pyflow装饰后,会自动添加fnode的构图方法,使用方式参考调用示例。
函数原型
装饰器@pyflow
参数说明
返回值
装饰后的类或者函数。
异常情况下会抛出DfException异常。可以通过捕捉异常获取DfException中的error_code与message查看具体的错误码及错误信息。详细信息请参考DataFlow错误码。
调用示例
# current is udf.py
import dataflow as df
@df.pyflow(num_returns=2, resources={"memory": 100, "num_cpus": 1})
def func1(a, b):
return a + b,a - b
@df.pyflow
def func2(a, b):
return a + b
@df.pyflow(stream_input='Queue')
def func3(a, b):
data1 = a.get()
data2 = a.get()
data3 = b.get()
return data1 + data2 + data3
@df.pyflow(choice_output=lambda e: e is not None)
def func4(self, a) -> Tuple[int, int]:
return None, a # 根据lambda函数将非空值传给相应输出
# current is graph.py
from UDF import func2
import dataflow as df
# 构图
# 定义输入
data0 = df.FlowData()
data1 = df.FlowData()
# 使用func2自动生成的fnode方法构图
func_out = func2.fnode()(data0, data1)
# 构建FlowGraph
dag = df.FlowGraph([func_out])
约束说明
环境需安装对应Python版本的cloudpickle包。
流式输入场景下DataFlow框架不支持数据对齐和异常事务处理。