2016-09-14 2 views
1

Я использую коннектор JDBC от Confluent для отправки данных в Kafka в формате Avro. Мне нужно сохранить эту схему в реестре схемы, но я не уверен, какой формат она принимает. Я прочитал документацию here, но в ней мало упоминается.Сохранение схемы Avro в реестре схемы

Я попытался это (принимая Avro выхода и вставив его в - для одного междунара и одной строки поля):

curl -X POST -H "Content-Type: application/vnd.schemaregistry.v1+json"  --data '{"type":"struct","fields":[{"type":"int64","optional":true,"field":"id"},{"type":"string","optional":true,"field":"serial"}],"optional":false,"name":"test"}' http://localhost:8081/subjects/view/versions 

, но я получаю ошибку: { «error_code»: 422, «сообщение» : «Нераспознанное поле: тип»}

ответ

0

Прежде всего, вам нужно сохранить схему заранее? Если вы используете соединитель JDBC с конвертером Avro (который является частью пакета реестра схемы), разъем JDBC будет определять схему таблицы из базы данных и регистрировать ее для вас. Вам нужно будет указать конвертер в вашем конфигурационном файле KafkaConnect. Вы можете использовать это в качестве примера: https://github.com/confluentinc/schema-registry/blob/master/config/connect-avro-standalone.properties

Если вы действительно хотите зарегистрировать схему самостоятельно, есть вероятность, что проблема связана с командой оболочки - экранирование JSON в оболочке сложно. Я установил Advanced Rest Client в Chrome и использую его для работы с REST API как реестра схем, так и KafkaConnect.

+1

К сожалению, это не отвечает на вопрос. Однако то, что вы пишете, является правильным. – skomp

2

Схема, которую вы даете как JSON, должна начинаться с ключа «схемы». Фактическая схема, которую вы предоставляете, будет значение ключа схема.

Таким образом, ваш запрос должен выглядеть следующим образом:

curl -X POST -H "Content-Type: application/vnd.schemaregistry.v1+json"  --data '{"schema" : "{\"type\":\"string\",\"fields\":[{\"type\":\"int64\",\"optional\":true,\"field\":\"id\"},{\"type\":\"string\",\"optional\":true,\"field\":\"serial\"}],\"optional\":false,\"name\":\"test\"}"}' http://localhost:8081/subjects/view/versions 

Я сделал два другие изменения в команде:

  • Я сбежавших каждый двойные кавычки в значении схемы ключ.
  • Я изменил структуру данных структуры на строку. Я не уверен, почему он не принимает сложные структуры.

Ознакомьтесь с тем, как они смоделировали схему here, для первого запроса POST, описанного в документации.

+0

спасибо, я думаю, что это на самом деле правильный ответ, по крайней мере это помогло мне – skomp

Смежные вопросы