flink-doris-connector-1.16-1.6.2 的 lookup-join ,在 cache-miss 时,性能表现不佳

Viewed 90

背景:1520万行的 paimon 事实表,lookup-join doris 维表(183条数据),打宽之后写入 paimon 另一张表。

问题:整体 ETL 吞吐量较低,大约 1122条/秒。

期望:整体吞吐量能达到大于或等 1万/秒。

原因:发现 1520万 的源数据中,超过 80% 的数据不能命中 doris 维表,即使开了 doris lookup 缓存也无效果。

其它试验:
1、当大量或全量源数据 cache-hit doris 维表时,吞吐量能达到 4万条/秒。
2、把 doris 维表导入 paimon 中,由 paimon 事实表 lookup-join paimon 维表,则吞吐量能稳定在 3万条/秒 上下。

4 Answers

问题状态:跟进中,有进展会更新回帖

  1. 贴下DorisConnector的配置
  2. 看下SQL是不是点查,在审计日志中看下单个SQL的耗时

用的 Flink-SQL:

LOOKUP 参数:

/*+ OPTIONS(
        'lookup.cache.max-rows'='20000',
        'lookup.cache.ttl'='3600s',
        'lookup.max-retries'='0',
        'lookup.jdbc.async'='true',
        'lookup.jdbc.read.batch.size'='10000',
        'lookup.jdbc.read.batch.queue-size'='256',
        'lookup.jdbc.read.thread-size'='32'
        )*/

Doris Connector 配置:

    'connector' = 'doris',
    'fenodes' = '${DORIS_FE_NODES}',
    'jdbc-url' = '${DORIS_FE_JDBC_URL}',
    'username' = '${DORIS_USER}',
    'password' = '${DORIS_PWD}',
    'table.identifier' = '表名'

确实是点查:
1、paimon 表 left join doris on doris.name = paimon.name
2、name 字段在 doris 中是 UNIQUE_KEY(name)

您doris表作维表的时候,有加这个吗?for SYSTEM_TIME AS OF PROCTIME()
我报了这个错误,你有遇到吗?Error while applying rule StreamPhysicalSnapshotOnTableScanRule