pyflink udf:何时使用矢量化vs标量

vshtjzan  于 2021-07-15  发布在  Flink
关注(0)|答案(0)|浏览(344)

在决定矢量化和标量pyflink udf时,有没有一套简单的规则可以遵循?
根据docs,矢量化的udf具有以下优点:(1)更小的ser-de和调用开销(2)vector(尤其是数值的,如果我理解正确的话)计算由于libs(如numpy)而得到高度优化。
矢量化python用户定义函数是通过在jvm和python vm之间以箭头列格式传输一批元素来执行的函数。矢量化python用户定义函数的性能通常比非矢量化python用户定义函数高得多,因为序列化/反序列化开销和调用开销大大减少。此外,用户还可以利用流行的python库(如pandas、numpy等)来实现矢量化的python用户定义函数。这些python库经过高度优化,提供了高性能的数据结构和函数。
问题1:矢量化自定义项总是首选吗?
比方说,在我的用例中,我只想从json列中提取一些字段,但flink内置函数还不支持这些字段,因此我需要定义我的udf,如:

@udf(...)
def extract_field_from_json(json_value, field_name):
    import json
    return json.loads(json_value)[field_name]

问题2:在这种非数字的情况下,我是否也会从矢量化的自定义项中受益?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题