2016-06-21 9 views
0

Ich versuche, in Apache Avro eine "Bestellung" und die damit verbundenen Einträge zu vertreten. Siehe unten für das Schema. Ich erhalte den folgenden Fehler, wenn ich versuche, es in Eclipse zu erstellen. Jede Hilfe wird geschätzt.avro mit einem Array von verschachtelten Schema

[ERROR] Failed to execute goal org.apache.avro:avro-maven-plugin:1.8.1:schema (default) on project avrosample: Execution default of goal org.apache.avro:avro-maven-plugin:1.8.1:schema failed: Undefined name: "com.company.domain.entry" -> [Help 1] 

**Schema For Entry:** 
{"namespace": "com.company.domain", 
"type": "record", 
"name": "entry", 
"fields": [ 
    {"name": "id", "type": "long"}, 
    {"name": "description", "type": "string"}, 
    {"name": "quantity", "type: “int”} 

] 
} 

**Schema for Order:** 
{"namespace": "com.company.domain", 
"type": "record", 
"name": "order", 
"fields": [ 
    {"name": "id", "type": "long"}, 
    {"name": "date", "type": "long"}, 
    {"name": "entries", "type": {"items": "array", "items": "com.company.domain.entry"} }} 

] 
} 

Antwort

0

Wenn ich mich nicht irre, können Sie nicht ein Entry-Schema verknüpfen Bestell-Schema auf diese Weise. Warum verwenden Sie nicht stattdessen ein gemeinsames Schema für die Bestellung? Etwas wie dieses:

{ 
    "type": "record", 
    "name": "Order", 
    "namespace": "com.company.domain", 
    "fields": [ 
    { 
     "name": "id", 
     "type": "long" 
    }, 
    { 
     "name": "date", 
     "type": "long" 
    }, 
    { 
     "name": "entries", 
     "type": { 
     "type": "array", 
     "items": { 
      "type": "record", 
      "name": "Entry", 
      "fields": [ 
      { 
       "name": "id", 
       "type": "long" 
      }, 
      { 
       "name": "description", 
       "type": "string" 
      }, 
      { 
      "name": "quantity", 
       "type": "int" 
      } 
      ] 
     }, 
     "java-class": "java.util.List" 
     } 
    } 
    ] 
} 
Verwandte Themen