Разъем раковины Kafka Connect JDBC вложенный авро - PullRequest
0 голосов
/ 31 мая 2018

Я пытаюсь запустить приемник подключения Kafka для базы данных Oracle.Авро сообщение в кафке является вложенным.

Сообщение выглядит примерно так:

    {
      "header" : {
        "id" : "",
        "source" : "",
        "name" : ""
      },
      "somefields" : {
        "something" : "value",
         "other" : "its value",

           }
}

Мой вопрос:

Можно ли добиться этого с помощью Kafka connect?Если так, то как?Я помню, что чтение где-то вложенных структур не поддерживается.Это правда, если так, почему?Я получаю сообщение об ошибке:

org.apache.kafka.connect.errors.ConnectException:(STRUCT) type doesn't have a mapping to the SQL database column type
    at io.confluent.connect.jdbc.sink.dialect.DbDialect.getSqlType(DbDialect.java:202)
    at io.confluent.connect.jdbc.sink.dialect.OracleDialect.getSqlType(OracleDialect.java:73)
    at io.confluent.connect.jdbc.sink.dialect.DbDialect.writeColumnSpec(DbDialect.java:140)
    at io.confluent.connect.jdbc.sink.dialect.DbDialect$3.apply(DbDialect.java:132)
    at io.confluent.connect.jdbc.sink.dialect.DbDialect$3.apply(DbDialect.java:128)
    at io.confluent.connect.jdbc.sink.dialect.StringBuilderUtil.joinToBuilder(StringBuilderUtil.java:54)
    at io.confluent.connect.jdbc.sink.dialect.StringBuilderUtil.joinToBuilder(StringBuilderUtil.java:37)
    at io.confluent.connect.jdbc.sink.dialect.DbDialect.writeColumnsSpec(DbDialect.java:128)
    at io.confluent.connect.jdbc.sink.dialect.DbDialect.getCreateQuery(DbDialect.java:96)
    at io.confluent.connect.jdbc.sink.DbStructure.create(DbStructure.java:87)
    at io.confluent.connect.jdbc.sink.DbStructure.createOrAmendIfNecessary(DbStructure.java:62)
    at io.confluent.connect.jdbc.sink.BufferedRecords.add(BufferedRecords.java:66)
    at io.confluent.connect.jdbc.sink.JdbcDbWriter.write(JdbcDbWriter.java:62)

Любая помощь или совет высоко ценится.

...