You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kafka例行导入StarRocks时能否将列转换为bitmap/HLL类型

Kafka Routine Load对Bitmap/HLL类型转换的支持说明

StarRocks的Kafka Routine Load完全支持导入阶段将指定列转换为Bitmap或HLL类型实现预聚合去重优化,语法规则与Stream Load、Broker Load完全对齐,不需要额外适配特殊逻辑。

具体配置方法

配置核心是在创建Routine Load任务时,通过COLUMNS子句定义源字段到目标字段的转换规则,提前将目标表的对应字段定义为对应聚合类型即可。

  • HLL类型转换
    目标表对应字段需提前定义为HLL类型,聚合模式设置为HLL_UNION,转换时对源字段调用hll_hash()函数完成类型构造。
    参考示例:

    目标表建表语句

    CREATE TABLE `hll_uv_stat` (
      `stat_date` date NOT NULL,
      `visitor_hll` hll HLL_UNION NOT NULL
    ) ENGINE=OLAP
    AGGREGATE KEY(`stat_date`)
    DISTRIBUTED BY HASH(`stat_date`) BUCKETS 4;
    

    创建Routine Load任务语句

    CREATE ROUTINE LOAD stat_db.hll_uv_load ON hll_uv_stat
    -- 核心转换逻辑:源端读入的visitor_id字段经hll_hash转换后写入目标HLL字段
    COLUMNS(stat_date, visitor_id, visitor_hll = hll_hash(visitor_id))
    PROPERTIES (
      "format" = "json",
      "desired_concurrent_number" = "3"
    )
    FROM KAFKA (
      "kafka_broker_list" = "broker1:9092,broker2:9092",
      "kafka_topic" = "page_visit",
      "property.group.id" = "sr_hll_uv_group"
    );
    
  • Bitmap类型转换
    目标表对应字段需提前定义为BITMAP类型,聚合模式设置为BITMAP_UNION,根据源字段类型选择对应的构造函数:

    • 源字段为整型:直接用to_bitmap(源字段名)做转换,性能最优
    • 源字段为字符串/UUID等非整型:用bitmap_hash(源字段名)做哈希转换后写入Bitmap
      参考示例:

    目标表建表语句

    CREATE TABLE `bitmap_uv_stat` (
      `stat_date` date NOT NULL,
      `visitor_bitmap` bitmap BITMAP_UNION NOT NULL
    ) ENGINE=OLAP
    AGGREGATE KEY(`stat_date`)
    DISTRIBUTED BY HASH(`stat_date`) BUCKETS 4;
    

    创建Routine Load任务语句(源visitor_id为字符串场景)

    CREATE ROUTINE LOAD stat_db.bitmap_uv_load ON bitmap_uv_stat
    -- 核心转换逻辑:字符串类型visitor_id经bitmap_hash转换后写入目标Bitmap字段
    COLUMNS(stat_date, visitor_id, visitor_bitmap = bitmap_hash(visitor_id))
    PROPERTIES (
      "format" = "json",
      "desired_concurrent_number" = "3"
    )
    FROM KAFKA (
      "kafka_broker_list" = "broker1:9092,broker2:9092",
      "kafka_topic" = "page_visit",
      "property.group.id" = "sr_bitmap_uv_group"
    );
    

注意事项

  • 禁止将Kafka源端的原始字段直接映射到HLL/BITMAP类型的目标列,必须通过对应的类型构造函数做转换,否则会抛出类型不匹配错误
  • 若Kafka数据为JSON格式,COLUMNS子句中定义的源字段名需要和JSON中的key完全一致,大小写敏感
  • 所有Stream Load、Broker Load支持的列转换函数,在Routine Load的COLUMNS子句中都可以正常使用,没有功能限制

内容的提问来源于stack exchange,提问作者sel-fish

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 18:48:28