所需 Avro 模式的对应 'Groovy' 映射 - divolte
Corresponding 'Groovy' mapping for required Avro Schema - divolte
我正在尝试为我所需的 Avro 架构编写一个 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 }
]
}
谢谢。
- 要在 Groovy 映射 DSL 中映射 Avro 'array',使用以下 hack。
参见 Groovy mapping for Avro 'array'
map eventParameters().path('$.roleId.*') onto 'roleId'
map eventParameters().path('$.roleName.*') onto 'roleName'
- Groovy 映射 DSL 中没有对 Avro 'enum' 字段的官方支持。
Extend Avro 'enum' field support in mapping DSL
我正在尝试为我所需的 Avro 架构编写一个 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 }
]
}
谢谢。
- 要在 Groovy 映射 DSL 中映射 Avro 'array',使用以下 hack。 参见 Groovy mapping for Avro 'array'
map eventParameters().path('$.roleId.*') onto 'roleId'
map eventParameters().path('$.roleName.*') onto 'roleName'
- Groovy 映射 DSL 中没有对 Avro 'enum' 字段的官方支持。 Extend Avro 'enum' field support in mapping DSL