Не может получить данные из таблицы KSQL
Я создаю новый поток
CREATE STREAM details_stream_rekeyed2 as \
select CONCAT(IdSeq,IdTime,'') as root,ServerId,Server,\
IdTime ,IdSeq \
from voip_details_stream \
partition by root;
выберите из этого потока, и я получу> 100 пунктов
тогда я пытаюсь создать таблицу
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');
когда я бегу
SELECT ROWKEY,ROOT FROM VOIP_DETAILS_TABLE3;
я получаю только менее 10 предметов лайков;
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
все в порядке. и я получаю данные любит
Key: 12018-02-05T15:16:07.113-05:00
Key Bytes: 30
Value: {"SERVER":null,"IDSEQ":1,"ROOT":"12018-02-05T15:16:07.113-05:00","SERVERID":null,"SESSIONIDTIME":"2018-02-05T15:16:07.113-05:00"}
Байт значения: 158
где проблема?
1 ответ
Решение
Таблица KSQL отличается от KSQL Stream тем, что она дает вам последнее значение для данного ключа. Поэтому, если вы ожидаете увидеть в таблице столько же сообщений, сколько и исходный поток, у вас должно быть одинаковое количество уникальных ключей.
Если вы видите меньше сообщений, то это говорит о том, что ROOT
не уникален
В зависимости от моделируемой проблемы, вы должны:
- (а) использовать поток, а не таблицу, или
- (б) изменить ключ, который вы используете
Ref: