Вставка массивов с вложенной структурой в KSQLDB - PullRequest
0 голосов
/ 09 мая 2020

Я пытаюсь вставить объекты вложенного массива в таблицу K SQL. Моя таблица имеет следующую структуру:

CREATE TABLE nlpArticlesTrain ("articleText" VARCHAR,
  "ner" ARRAY<STRUCT<"text" VARCHAR, "label" VARCHAR>>,
  "rel" ARRAY<STRUCT<"head" VARCHAR, "tail" VARCHAR, "rel" VARCHAR, "prob" DOUBLE>>)
  WITH (KAFKA_TOPIC = 'nlpArticlesTrain', PARTITIONS=1, REPLICAS=1, VALUE_FORMAT='AVRO');

Я знаю, что могу sh использовать стандартный производитель Kafka с поддержкой Avro, но я ищу способ INSER INTO VALUES в таблицу, чтобы поток / заполнено topi c внизу. Из документации запроса со структурированными данными мне не хватает примера для вставки.

INSERT INTO nlpArticlesTrain (articleText,ner,rel) VALUES ("string", [{..}],[{..}]) не работает.

Более конкретный пример:

INSERT INTO nlpArticlesTrain (articleText,ner,rel) VALUES ("some", [{'text': 'The Mexican Ministry of Health', 'label': 'ORG'}, {'text': 'Tuesday', 'label': 'DATE'}, {'text': 'at least 29', 'label': 'CARDINAL'}], [{'head': 'The Mexican Ministry of Health', 'tail': 'Tuesday', 'rel': 'subsidiary', 'prob': 0.3873162269592285}])

1 Ответ

1 голос
/ 22 мая 2020

Это зависит от того, какая у вас версия ksqlDB. Более поздние версии поддерживают конструкторы ARRAY и STRUCT, что вам и нужно. Например:

CREATE STREAM TEST (K STRING KEY, A ARRAY<STRUCT<FOO INT>>) 
    WITH (kafka_topic='test_topic', value_format='JSON');

INSERT INTO TEST (A) VALUES (ARRAY[
   STRUCT(FOO := 1),
   STRUCT(FOO := 2)
]);
...