Как использовать схему реестра для Kafka Connect AVRO - PullRequest
3 голосов
/ 06 января 2020

Я недавно начал изучать связь Кафки и Кафки и провел некоторые начальные настройки. Но я хотел бы узнать больше о части реестра схемы.

Мой реестр схемы теперь запущен, что я должен делать.

У меня есть схема AVRO, хранящаяся в avro_schema.avs c.

вот схема

{
  "name": "FSP-AUDIT-EVENT",
  "type": "record",
  "namespace": "com.acme.avro",
  "fields": [
    {
      "name": "ID",
      "type": "string"
    },
    {
      "name": "VERSION",
      "type": "int"
    },
    {
      "name": "ACTION_TYPE",
      "type": "string"
    },
    {
      "name": "EVENT_TYPE",
      "type": "string"
    },
    {
      "name": "CLIENT_ID",
      "type": "string"
    },
    {
      "name": "DETAILS",
      "type": "string"
    },
    {
      "name": "OBJECT_TYPE",
      "type": "string"
    },
    {
      "name": "UTC_DATE_TIME",
      "type": "long"
    },
    {
      "name": "POINT_IN_TIME_PRECISION",
      "type": "string"
    },
    {
      "name": "TIME_ZONE",
      "type": "string"
    },
    {
      "name": "TIMELINE_PRECISION",
      "type": "string"
    },
    {
      "name": "AUDIT_EVENT_TO_UTC_DT",
      "type": [
        "string",
        "null"
      ]
    },
    {
      "name": "AUDIT_EVENT_TO_DATE_PITP",
      "type": "string"
    },
    {
      "name": "AUDIT_EVENT_TO_DATE_TZ",
      "type": "string"
    },
    {
      "name": "AUDIT_EVENT_TO_DATE_TP",
      "type": "string"
    },
    {
      "name": "GROUP_ID",
      "type": "string"
    },
    {
      "name": "OBJECT_DISPLAY_NAME",
      "type": "string"
    },
    {
      "name": "OBJECT_ID",
      "type": [
        "string",
        "null"
      ]
    },
    {
      "name": "USER_DISPLAY_NAME",
      "type": [
        "string",
        "null"
      ]
    },
    {
      "name": "USER_ID",
      "type": "string"
    },
    {
      "name": "PARENT_EVENT_ID",
      "type": [
        "string",
        "null"
      ]
    },
    {
      "name": "NOTES",
      "type": [
        "string",
        "null"
      ]
    },
    {
      "name": "SUMMARY",
      "type": [
        "string",
        "null"
      ]
    }
  ]
}

Допустима ли моя схема. Я преобразовал ее в режиме онлайн из JSON? где я должен хранить расположение файла схемы, в котором я не уверен. Пожалуйста, направьте меня с шагом, чтобы следовать. Я отправляю записи из лямбда-функции и из источника JDB C.

Так в принципе, как я могу применить схему AVRO и проверить? Нужно ли что-то менять в файле свойств avro-customer?

Или это правильный способ регистрации схемы

   ./bin/kafka-avro-console-producer \
                 --broker-list b-3.**:9092,b-**:9092,b-**:9092 --topic AVRO-AUDIT_EVENT \
                 --property value.schema='{"type":"record","name":"myrecord","fields":[{"name":"f1","type":"string"}]}'





curl -X POST -H "Content-Type: application/vnd.schemaregistry.v1+json"     --data '{"schema" : "{\"type\":\"struct\",\"fields\":[{\"type\":\"string\",\"optional\":false,\"field\":\"ID\"},{\"type\":\"string\",\"optional\":true,\"field\":\"VERSION\"},{\"type\":\"string\",\"optional\":true,\"field\":\"ACTION_TYPE\"},{\"type\":\"string\",\"optional\":true,\"field\":\"EVENT_TYPE\"},{\"type\":\"string\",\"optional\":true,\"field\":\"CLIENT_ID\"},{\"type\":\"string\",\"optional\":true,\"field\":\"DETAILS\"},{\"type\":\"string\",\"optional\":true,\"field\":\"OBJECT_TYPE\"},{\"type\":\"string\",\"optional\":true,\"field\":\"UTC_DATE_TIME\"},{\"type\":\"string\",\"optional\":true,\"field\":\"POINT_IN_TIME_PRECISION\"},{\"type\":\"string\",\"optional\":true,\"field\":\"TIME_ZONE\"},{\"type\":\"string\",\"optional\":true,\"field\":\"TIMELINE_PRECISION\"},{\"type\":\"string\",\"optional\":true,\"field\":\"GROUP_ID\"},{\"type\":\"string\",\"optional\":true,\"field\":\"OBJECT_DISPLAY_NAME\"},{\"type\":\"string\",\"optional\":true,\"field\":\"OBJECT_ID\"},{\"type\":\"string\",\"optional\":true,\"field\":\"USER_DISPLAY_NAME\"},{\"type\":\"string\",\"optional\":true,\"field\":\"USER_ID\"},{\"type\":\"string\",\"optional\":true,\"field\":\"PARENT_EVENT_ID\"},{\"type\":\"string\",\"optional\":true,\"field\":\"NOTES\"},{\"type\":\"string\",\"optional\":true,\"field\":\"SUMMARY\"},{\"type\":\"string\",\"optional\":true,\"field\":\"AUDIT_EVENT_TO_UTC_DT\"},{\"type\":\"string\",\"optional\":true,\"field\":\"AUDIT_EVENT_TO_DATE_PITP\"},{\"type\":\"string\",\"optional\":true,\"field\":\"AUDIT_EVENT_TO_DATE_TZ\"},{\"type\":\"string\",\"optional\":true,\"field\":\"AUDIT_EVENT_TO_DATE_TP\"}],\"optional\":false,\"name\":\"test\"}"}' http://localhost:8081/subjects/view/versions

что дальше мне делать

Но когда я пытаюсь увидеть мою схему, я получаю только ниже

curl --silent -X GET http://localhost:8081/subjects/AVRO-AUDIT-EVENT/versions/latest

это результат

{"subject":"AVRO-AUDIT-EVENT","version":1,"id":161,"schema":"{\"type\":\"string\",\"optional\":false}"}

Почему я не вижу свою полную зарегистрированную схему

Также, когда я попробуйте удалить схему

я получаю ошибку ниже

{"error_code":405,"message":"HTTP 405 Method Not Allowed"

Я не уверен, правильно ли зарегистрирована моя схема.

Пожалуйста, помогите мне. Заранее спасибо

1 Ответ

1 голос
/ 06 января 2020

моя схема действительна

Вы можете использовать REST API реестра, чтобы попробовать и отправить его, и посмотрите ...

где я должен сохраните расположение файла схемы, я не уверен насчет

Непонятно, как вы отправляете сообщения ...

Если вы на самом деле написали код производителя Kafka, вы сохраните его в своем код (в виде строки) или в виде файла ресурсов. Если вы используете Java, вы можете вместо этого использовать класс SchemaBuilder для создания объекта схемы

Вам необходимо переписать вашего производителя в используйте Avro Schema и сериализаторы, если вы еще не

Если мы создадим схему AVRO, она будет работать и для Json.

Avro - двоичный формат, но для этого есть JSONDecoder.

каким должен быть URL-адрес нашего файла свойств схемы AVRO?

Это должен быть IP-адрес вашего реестра схем, как только вы поймете, как его запустить. (с schema-registry-start)

Нужно ли что-либо менять в файле свойств avro-customer?

Вам необходимо использовать десериализатор Avro

- это правильный способ регистрации схемы

.> /bin/kafka-avro-console-producer \

Не совсем. Вот как вы создаете сообщение со схемой (и вам нужно использовать правильную схему). Вы также должны предоставить --property schema.registry.url

Вы используете REST API реестра для регистрации и проверки схем

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...