在Avro中表示UUID的最佳方式?

Ale*_*ean 4 uuid avro

我很想知道在Avro中编码一种非常特殊类型的数据的最佳实践:UUID.

Fra*_*ula 8

这是我一直在做的事情:

{
    "name": "user_id",
    "type": "string",
    "logicalType": "UUID"
}
Run Code Online (Sandbox Code Playgroud)

在编写logicalTypeUUID 时没有记录,但它仍然受支持,您可以在此处检查代码并自行验证:https : //github.com/apache/avro/blob/branch-1.8/lang/java/ avro/src/main/java/org/apache/avro/LogicalTypes.java#L71

这里是文档:https : //avro.apache.org/docs/1.10.0/spec.html#UUID

  • 我认为,它应该是小写的 `"ticalType": "uuid"` 。文档的该部分显示“UUID”,但随后注释了“uuid”。“日期”也是如此,其中有一个使用“日期”的示例。在 `LogicalTypes.java` 中它也是小写的。 (4认同)

Mar*_*ier 7

到目前为止,我找到的唯一方法是定义自定义UUID:

{
  "namespace" : "your.namespace",
  "type" : "fixed",
  "name" : "UUID",
  "size" : 16
}
Run Code Online (Sandbox Code Playgroud)

我正在使用Scala,所以我还定义了java.util.UUID和我的自定义UUID 之间的隐式转换,因此使用它并不是那么麻烦.