Поток KSQL, созданный с использованием AVRO в качестве формата значения, выводит ноль - PullRequest
1 голос
/ 14 мая 2019

У меня есть данные в этом формате

{"ROWTIME":1557825832927,"ROWKEY":"null","respondent_id":"noon","machine_data":{"resolution":"1920x1080","region":860}}

когда я создаю поток под названием COMPLEX, например:

CREATE STREAM complex WITH (KAFKA_TOPIC='test-topic-complex-2', VALUE_FORMAT='AVRO');

А затем запустите:

SELECT MACHINE_DATA from COMPLEX;

отлично работает.

Запуск этого:

SELECT MACHINE_DATA->RESOLUTION from COMPLEX;

не работает, говоря, что RESOLUTION не является полем в машинных данных. Но это явно 1015 *

Я отбросил поток COMPLEX, затем пересоздал его и явно указал, что разрешение - это поле, создав поток с использованием этого синтаксиса

CREATE STREAM COMPLEX (respondent_id VARCHAR, machine_data struct<resolution VARCHAR, region INT>) WITH (KAFKA_TOPIC='test-topic-complex-2', VALUE_FORMAT='AVRO');

после этого я могу выполнить этот запрос select MACHINE_DATA->RESOLUTION from COMPLEX;, но я получаю значение NULL для разрешения

Все отлично работает при использовании JSON в качестве формата значения. Что дает? Кто-нибудь может указать, что я делаю неправильно?

...