не может получить данные из таблицы KSQL - PullRequest
0 голосов
/ 13 мая 2018

Я создаю повторно созданный поток

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 Ответ

0 голосов
/ 14 мая 2018

Таблица KSQL отличается от KSQL Stream тем, что она дает вам последнее значение для данного ключа . Поэтому, если вы ожидаете увидеть в таблице столько же сообщений, сколько и исходный поток, у вас должно быть одинаковое количество уникальных ключей.

Если вы видите меньше сообщений, значит, ROOT не является уникальным.

В зависимости от моделируемой проблемы, вы должны либо:

  • (a) использует поток, а не таблицу, или
  • (b) измените ключ, который вы используете

Ссылка:

...