2017-10-21 7 views
2

スキーマレジストリにAVROスキーマを登録しようとしています。スキーマにはレコードといくつかのフィールドが含まれています。 JSONをスキーマレジストリREST APIにポストしますが、JSONは正常に見えますが、サーバはcurl : {"error_code":42201,"message":"Input schema is an invalid Avro schema"}を返します。AVROスキーマのJSONは有効ですが、Kafkaスキーマレジストリから無効を返します

他にもありますか?

Powershellは、JSONとしてスキーマを生成するために使用されます。

$type = @{namespace="customer-actions"; name="customer-enrollment"; 
      type="record"; 
      [email protected]{name="id"; type="int"}, 
       @{name="name"; type="string"}} 
$typeJ = ConvertTo-Json $type -Depth 3 -Compress 

$schema = @{schema = "$typeJ" } 
$schemaJ = ConvertTo-Json $schema -Compress 

これは...以下を生成

本当に悪いに見える
{"schema":"{\"type\":\"record\",\"namespace\":\"customer-actions\",\"name\":\"customer-enrollment\",\"fields\":[{\"name\":\"id\",\"type\":\"int\ 
"},{\"name\":\"name\",\"type\":\"string\"}]}"} 

。エスケープされた引用符はすべて必要です。同一のエスケープ文字が問題なく簡単なスキーマで使用されます。

ありがとうございます。

[編集] スキーマレジストリAPIの呼び出しが、それは場合に役立ちます

curl -Uri http://server:8081/subjects/customer-enrollment/versions ` 
    -Method Post ` 
    -ContentType "application/vnd.schemaregistry.v1+json" ` 
    -Body $schemaJ 

答えて

3

問題だった - 名前の顧客登録

$type = @{namespace="customer-actions"; name="enrollment"; 
      type="record"; 
      [email protected]{name="id"; type="int"}, 
       @{name="name"; type="string"}} 
$typeJ = ConvertTo-Json $type -Depth 3 -Compress 

$schema = @{schema = "$typeJ" } 
$schemaJ = ConvertTo-Json $schema -Compress 

の文字があなたのための用語ありパブリックフォーラムで質問を投稿した直後に自分で答えを見つけますか?

+0

バリデータはこちら[AVROスキーマバリデータ](https://json-schema-validator.herokuapp.com/avro.jsp) –

+2

[Rubber Duck Debugging](https: //en.wikipedia.org/wiki/Rubber_duck_debugging) –

+0

@LucianoAfranllieはそうです! –

関連する問題