开发者社区> 问答> 正文

Re: flink1.12 执行sql_query(),同样的数据源表,pyflink执行时间9mi

Hi, 我是用的flink1.12的pandas类型的udaf, 代码如下:

@udaf(result_type=DataTypes.FLOAT(), func_type="pandas")

def logReturn(i, j):

df = pd.DataFrame({'id': i, 'rate': j})

df['rate1'] = df['rate'] + 1

return numpy.prod(df['rate1']) - 1

调用方式为:

result = query_table.group_by(query_table.PF_ID).select(query_table.ID,

logReturn(

query_table.ID,

query_table.RATE)).execute_insert('print').wait()

这个代码的sink用的print,,其实之前的to_pandas也是用在最后一步来获取计算结果,用于返回的;

java的写法类似,也是定义了udaf之后执行,返回Table类型的结果,再对这个结构处理,取出计算结果;

但两者的执行时间差很多,python用了很多方式,实现同样的简单计算逻辑,都差不多要8分钟左右。

总感觉时间用在query上,之前使用过flink1.11中connector.read.query方式直接获取数据,计算的速度就很快~

小白一个,不太了解flink内部的设计,希望能在这里找到具体的原因~谢谢您啦~*来自志愿者整理的flink邮件归档

展开
收起
EXCEED 2021-12-01 15:41:31 593 0
1 条回答
写回答
取消 提交回答
  • 你是拿java写的udaf和pandas udaf做性能对比的吗,你是怎么测试的?你是在哪种场景下使用的pandas udaf?还有就是你用了to_pandas就是sink了,瓶颈就是在这,这玩意儿一般用在debug或者写it用的,不会拿来做性能测试的sink和上生产用的。*来自志愿者整理的flink邮件归档

    2021-12-01 16:00:44
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Flink CDC Meetup PPT - 龚中强 立即下载
Flink CDC Meetup PPT - 王赫 立即下载
Flink CDC Meetup PPT - 覃立辉 立即下载