【问题标题】:Getting Illegal initial character: in schema parsing获取非法初始字符:在模式解析中
【发布时间】:2017-06-30 21:50:03
【问题描述】:

我正在使用 Avro 1.8.1 并尝试解析以下 schema_2。你能帮忙吗?

    val schema: Schema = new Schema.Parser().parse(StrSchema) 

I am getting following exception.
Exception in thread "main" org.apache.avro.SchemaParseException: Illegal initial character: {"type":"record","name":"WS_MESSAGES","fields":[{"name":"message_id","type":"string"},{"name":"action","type":"string"},{"name":"status","type":"string"},{"name":"request","type":"string"},{"name":"response","type":"string"}]} 

at org.apache.avro.Schema.validateName(Schema.java:1079) 
        at org.apache.avro.Schema.access$200(Schema.java:79) 
        at org.apache.avro.Schema$Name.<init>(Schema.java:436) 
        at org.apache.avro.Schema$Names.get(Schema.java:1043) 
        at org.apache.avro.Schema.parse(Schema.java:1160) 
        at org.apache.avro.Schema$Parser.parse(Schema.java:965) 
        at org.apache.avro.Schema$Parser.parse(Schema.java:953) 
        at main.scala.SampleStreaming$.main(SampleStreaming.scala:42) 
        at main.scala.SampleStreaming.main(SampleStreaming.scala) 

Schema_2:

    "{\"type\":\"record\",\"name\":\"WS_MESSAGES\",\"fields\":[{\"name\":\"message_id\",\"type\":\"string\"},{\"name\":\"action\",\"type\":\"string\"},{\"name\":\"status\",\"type\":\"string\"},{\"name\":\"request\",\"type\":\"string\"},{\"name\":\"response\",\"type\":\"string\"}]}" 

我最初试图解析以下 schema_1 但得到不同的错误,然后操纵字符串以生成上面的 schema_2。

Exception in thread "main" org.apache.avro.SchemaParseException: No type: {"schema":"{\"type\":\"record\",\"name\":\"WS_MESSAGES\",\"fields\":[{\"name\":\"message_id\",\"type\":\"string\"},{\"name\":\"action\",\"type\":\"string\"},{\"name\":\"status\",\"type\":\"string\"},{\"name\":\"request\",\"type\":\"string\"},{\"name\":\"response\",\"type\":\"string\"}],\"connect.name\":\"WS_MESSAGES\"}"} 
        at org.apache.avro.Schema.getRequiredText(Schema.java:1305) 
        at org.apache.avro.Schema.parse(Schema.java:1166) 

Schema_1: 

    {"schema":"{\"type\":\"record\",\"name\":\"WS_MESSAGES\",\"fields\":[{\"name\":\"message_id\",\"type\":\"string\"},{\"name\":\"action\",\"type\":\"string\"},{\"name\":\"status\",\"type\":\"string\"},{\"name\":\"request\",\"type\":\"string\"},{\"name\":\"response\",\"type\":\"string\"}],\"connect.name\":\"WS_MESSAGES\"}"} 

Thanks, 
Amritendu

【问题讨论】:

    标签: apache-kafka avro


    【解决方案1】:

    我猜,问题是,您在名称字段 (connect.name) 中使用了一个点 (.)。这是不允许的。看看Names Avro

    【讨论】:

      猜你喜欢
      • 2011-06-26
      • 1970-01-01
      • 2014-12-11
      • 1970-01-01
      • 1970-01-01
      • 2011-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多