在决定矢量化和标量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:在这种非数字的情况下,我是否也会从矢量化的自定义项中受益?
暂无答案!
目前还没有任何答案,快来回答吧!