flink 序列化慢

最近在做Processing Framework的性能比较,做到Flink时,测出的数据性能变得及其差。 细看之后发现瓶颈出现在 Collector.collect() 方法, 可能是序列化,对象的复制话费了大量的时间。 在我的例子中,collect(SINGLE OBJECGT)甚至要多到100ms (我这的OBJECT大概有500Bytes)

经过一番搜寻,这篇文章给了我答案

https://www.ververica.com/blog/curious-case-broken-benchmark-revisiting-apache-flink-vs-databricks-runtime

简单来说:

  1. 数据的存储结构尽量使用平整的方式
  2. 开启flink的object resue (collect()消耗瞬间减少到 < 1ms!)
  3. 另外可以参考: https://flink.apache.org/news/2020/04/15/flink-serialization-tuning-vol-1.html#performance-comparison

其他的参考

  1. 动态提交时表明依赖

flink run -C <link to your dependencies jar> my-flink-job.jar

https://www.cnblogs.com/felixzh/p/10300002.html