【问题标题】:Inserting arrays with nested structure in KSQLDB在 KSQLDB 中插入具有嵌套结构的数组
【发布时间】:2020-05-23 08:15:01
【问题描述】:

我正在尝试将嵌套数组对象插入 KSQL 表。我的表结构如下:

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');

我知道我可以使用支持 Avro 的标准 Kafka 生产者进行推送,但我正在寻找一种将 INSER INTO VALUES 发送到表格的方法,以便填充下面的流/主题。从documentation of query with structured data 我缺少一个插入示例。

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}])

【问题讨论】:

    标签: apache-kafka confluent-platform ksqldb


    【解决方案1】:

    这取决于您使用的 ksqlDB 版本。更高版本支持ARRAYSTRUCT 构造函数,这正是您所需要的。例如:

    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)
    ]);
    

    【讨论】:

    • 感谢您的回答,但我的 OP 不是关于数组,而是关于数组中的嵌套结构。
    • STRUCT 和 ARRAY
    • 谢谢,在更新到最新的 KsqlDB 后快速检查似乎可以工作
    猜你喜欢
    • 2017-11-03
    • 1970-01-01
    • 1970-01-01
    • 2015-08-14
    • 2021-05-08
    • 2022-06-10
    • 2019-08-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多