所需的Avro模式的对应“ Groovy”映射-divolte

时间:2019-09-19 07:52:27

标签: groovy avro divolte

我正在尝试为我所需的Avro Schema写一个divolte-Groovy映射,但是每次都会抛出错误。

有人可以帮助我解决兼容的groovy脚本映射吗?

介电常数-0.9.0

{
  "namespace": "io.divolte.record",
  "type": "record",
  "name": "ClickStreamEvent",
  "fields": [
    { "name": "timestamp",               "type": "long" },
    { "name": "clientTimestamp",         "type": "long" },
    { "name": "detectedDuplicate",       "type": "boolean" },
    { "name": "detectedCorruption",      "type": "boolean" },
    { "name": "firstInSession",          "type": "boolean" },
    { "name": "viewportPixelWidth",      "type": ["null", "int"],    "default": null },
    { "name": "viewportPixelHeight",     "type": ["null", "int"],    "default": null },
    { "name": "screenPixelWidth",        "type": ["null", "int"],    "default": null },
    { "name": "screenPixelHeight",       "type": ["null", "int"],    "default": null },
    { "name": "remoteHost",              "type": "string" },
    { "name": "referer",                 "type": ["null", "string"], "default": null },
    { "name": "location",                "type": ["null", "string"], "default": null },
    { "name": "partyId",                 "type": ["null", "string"], "default": null },
    { "name": "sessionId",               "type": ["null", "string"], "default": null },
    { "name": "pageViewId",              "type": ["null", "string"], "default": null },
    { "name": "userAgentString",         "type": ["null", "string"], "default": null },
    { "name": "userAgentName",           "type": ["null", "string"], "default": null },
    { "name": "userAgentFamily",         "type": ["null", "string"], "default": null },
    { "name": "userAgentVendor",         "type": ["null", "string"], "default": null },
    { "name": "userAgentType",           "type": ["null", "string"], "default": null },
    { "name": "userAgentVersion",        "type": ["null", "string"], "default": null },
    { "name": "userAgentDeviceCategory", "type": ["null", "string"], "default": null },
    { "name": "userAgentOsFamily",       "type": ["null", "string"], "default": null },
    { "name": "userAgentOsVersion",      "type": ["null", "string"], "default": null },
    { "name": "userAgentOsVendor",       "type": ["null", "string"], "default": null },                
    { "name": "userId",                 "type": ["null", "string"],  "default":null },
    { "name": "userName",               "type": ["null", "string"],  "default":null },
    { "name": "roleId",                 "type": ["null", {"type":"array", "items": "string"}],  "default":null },
    { "name": "roleName",               "type": ["null", {"type":"array", "items": "string"}],  "default":null },
    { "name": "inputEventType",         "type": {"type": "enum", "name": "eventType", "symbols": ["buttonClick", "pageLoad", "inputChange"]} },
    { "name": "eventName",              "type": "string",           "default":"unknown" },
    { "name": "eventValue",             "type": ["null", "string"], "default":null }
  ]
}

谢谢。

1 个答案:

答案 0 :(得分:0)

  1. 要在Groovy映射DSL中映射Avro“阵列”,请使用下面的hack。 参见Groovy mapping for Avro 'array'
map eventParameters().path('$.roleId.*') onto 'roleId'
map eventParameters().path('$.roleName.*') onto 'roleName'
  1. 在Groovy映射DSL中没有对Avro“枚举”字段的官方支持。 Extend Avro 'enum' field support in mapping DSL