Slipstream 流流 join 注意事项

  其他常见问题
内容纲要

概要描述


本文主要说明:流流 join 的使用注意事项;

PS:有流式计算场景需求时,强烈建议适用 Slipstream 9.3.3 以上版本。

详细说明

  1. infinite window 不支持与另外一个流 join
  2. 流流 join 必要参数
  3. 多流 join 不支持
  4. 流表 glkjoin

infinite window 不支持和 另外一个流join

事件驱动模式下流与流的 Join 要求 join 的两个流必须是 window stream,且 window 的slide (滑动间隔) 必须一致;

且 infinite window 不支持和 另外一个流join

file

事件驱动模式下:


-- 设置自动把数据刷进表
SET morphling.result.auto.flush=true;

-- 建流s1
CREATE STREAM s1(id INT, letter STRING,ts TIMESTAMP)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
TBLPROPERTIES("topic"="demoo","kafka.zookeeper"="172.22.39.7:2181,","kafka.broker.list"="172.22.39.7:9092");

-- 建流s2
CREATE STREAM s2(id INT, letter STRING,ts TIMESTAMP)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
TBLPROPERTIES("topic"="demoo","kafka.zookeeper"="172.22.39.7:2181,","kafka.broker.list"="172.22.39.7:9092");

-- 建s1的衍生流s1_join
CREATE STREAM s1_join as SELECT * FROM s1 STREAMWINDOW w1 AS
(SEPARATED BY ts LENGTH '2' SECOND SLIDE '1' SECOND);

-- 建s2的衍生流s2_join
CREATE STREAM s2_join as SELECT * FROM s2 STREAMWINDOW w2 AS
(SEPARATED BY ts LENGTH '2' SECOND SLIDE '1' SECOND);

-- 建结果表t1
CREATE TABLE t1 (n1 STRING,n2 string);
INSERT INTO t1 SELECT s1_join.letter, s2_join.letter FROM s1_join JOIN s2_join ON s1_join.id ==
s2_join.id;
SELECT * FROM t1;

结果说明两个衍生流join成功:

file

file

说明:微批模式测试语句相同

流流 join 必要参数

  1. 流流 join 必要参数

    • ‘morphling.memory.optimize’=’true’
    • ‘morphling.rocksdb.ttl.seconds’=’86400’
  2. 任务高可用

    • ‘morphling.job.enable.checkpoint’=’true’

不支持3个及以上多流 join

多流 join 场景不支持 left join;

流表 glkjoin

  • 流流不能走 glkjoin。

  • 流表可以走 glkjoin,其中表必须是 hyperbase、search、holodesk 表;

  • 且 glkjoin 的 join 条件必须是 rowkey 字段(struct 类型也可以,使用 struct_key.col1)或者索引字段;

glkjoin 性能参数

‘stargate.global.lookup.join.batchsize’=’10’

这篇文章对您有帮助吗?

平均评分 0 / 5. 次数: 0

尚无评价,您可以第一个评哦!

非常抱歉,这篇文章对您没有帮助.

烦请您告诉我们您的建议与意见,以便我们改进,谢谢您。