我创建了一个重新加密的流
const source$ = Rx.Observable.from([1,2,3,4]);
const interval$ = Rx.Observable.interval(2000);
Rx.Observable.zip(source$, interval$)
.map(([value, _index]) => value)
.subscribe(console.log);
从此流中选择,我得到> 100件
然后我尝试创建一个表
CREATE STREAM details_stream_rekeyed2 as \
select CONCAT(IdSeq,IdTime,'') as root,ServerId,Server,\
IdTime ,IdSeq \
from voip_details_stream \
partition by root;
我跑的时候
create table voip_details_table3 \
(ROOT varchar,ServerId long , Server varchar ,IdTime varchar,IdSeq long ) \
with ( kafka_topic = 'DETAILS_STREAM_REKEYED2', \
value_format = 'json',\
key='ROOT');
我只得到不到10件物品;
SELECT ROWKEY,ROOT FROM VOIP_DETAILS_TABLE3;
我运行命令:
12018-04-04T18:56:35.080-04:00 | 12018-04-04T18:56:35.080-04:00
总的来说还可以。我得到数据
kafkacat -C -K: -b "$BROKER_LIST" -f 'Key: %k\nKey Bytes: %K\nValue: %s\nValue Bytes: %S\n\n' -t DETAILS_STREAM_REKEYED2
价值字节:158
哪里有问题?
答案 0 :(得分:2)
KSQL表与KSQL Stream的不同之处在于,它为给定键提供了最新值。因此,如果您希望在表中看到与源流相同数量的消息,则应该具有相同数量的唯一键。
如果您看到的消息较少,则表明ROOT
不是唯一的。
根据您正在建模的问题,您应该:
参考: